Sha256: 14451a51ddf9e240d43f6dac6ceeffb2c358852a96ae4278b6a80eb55c387ff7
Contents?: true
Size: 1.57 KB
Versions: 1
Compression:
Stored size: 1.57 KB
Contents
require 'active_ldap/association/collection' module ActiveLdap module Association class HasManyWrap < Collection private def insert_entry(entry) old_value = @owner[@options[:wrap], true] new_value = (old_value + entry[primary_key, true]).uniq.sort if old_value != new_value @owner[@options[:wrap]] = new_value @owner.save end end def delete_entries(entries) old_value = @owner[@options[:wrap], true] new_value = old_value - entries.collect {|entry| entry[primary_key]} new_value = new_value.uniq.sort if old_value != new_value @owner[@options[:wrap]] = new_value @owner.save end end def find_target foreign_base_key = primary_key requested_targets = @owner[@options[:wrap], true] components = requested_targets.collect do |value| key = val = nil if foreign_base_key == "dn" key, val = value.split(",")[0].split("=") unless value.empty? else key, val = foreign_base_key, value end [key, val] end.reject do |key, val| key.nil? or val.nil? end return [] if components.empty? klass = foreign_class found_targets = {} klass.find(:all, :filter => [:or, *components]).each do |target| found_targets[target.send(foreign_base_key)] ||= target end requested_targets.collect do |name| found_targets[name] || klass.new(name) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ruby-activeldap-0.8.2 | lib/active_ldap/association/has_many_wrap.rb |