| Class | ActiveLdap::Association::HasManyWrap |
| In: |
lib/active_ldap/association/has_many_wrap.rb
|
| Parent: | Collection |
# File lib/active_ldap/association/has_many_wrap.rb, line 16
16: def delete_entries(entries)
17: old_value = @owner[@options[:wrap], true]
18: new_value = old_value - entries.collect {|entry| entry[primary_key]}
19: new_value = new_value.uniq.sort
20: if old_value != new_value
21: @owner[@options[:wrap]] = new_value
22: @owner.save
23: end
24: end
# File lib/active_ldap/association/has_many_wrap.rb, line 26
26: def find_target
27: foreign_base_key = primary_key
28: requested_targets = @owner[@options[:wrap], true]
29:
30: components = requested_targets.collect do |value|
31: key = val = nil
32: if foreign_base_key == "dn"
33: key, val = value.split(",")[0].split("=") unless value.empty?
34: else
35: key, val = foreign_base_key, value
36: end
37: [key, val]
38: end.reject do |key, val|
39: key.nil? or val.nil?
40: end
41: return [] if components.empty?
42:
43: klass = foreign_class
44: found_targets = {}
45: klass.find(:all, :filter => [:or, *components]).each do |target|
46: found_targets[target.send(foreign_base_key)] ||= target
47: end
48:
49: requested_targets.collect do |name|
50: found_targets[name] || klass.new(name)
51: end
52: end