class ActiveLdap::Association::HasManyWrap
def add_entries(*entries)
def add_entries(*entries) result = true load_target flatten_deeper(entries).each do |entry| infect_connection(entry) insert_entry(entry) or result = false @target << entry end result && self end
def delete_entries(entries)
def delete_entries(entries) old_value = @owner[@options[:wrap], true] _foreign_key = foreign_key if _foreign_key == "dn" old_value = dn_values_to_string_values(old_value) end current_value = entries.collect {|entry| entry[_foreign_key]} current_value = dn_values_to_string_values(current_value) new_value = old_value - current_value new_value = new_value.uniq.sort if old_value != new_value @owner[@options[:wrap]] = new_value @owner.save unless @owner.new_entry? end end
def find_target
def find_target targets, requested_targets = collect_targets(@options[:wrap], true) return [] if targets.nil? found_targets = {} _foreign_key = foreign_key targets.each do |target| found_targets[target[_foreign_key]] ||= target end klass = foreign_class requested_targets.collect do |name| found_targets[name] || klass.new(name) end end
def foreign_key
def foreign_key @options[:primary_key_name] || foreign_class.dn_attribute end
def insert_entry(entry)
def insert_entry(entry) old_value = @owner[@options[:wrap], true] _foreign_key = foreign_key if _foreign_key == "dn" old_value = dn_values_to_string_values(old_value) end current_value = entry[_foreign_key, true] current_value = dn_values_to_string_values(current_value) new_value = (old_value + current_value).uniq.sort if old_value != new_value @owner[@options[:wrap]] = new_value @owner.save unless @owner.new_entry? end end