Sha256: b8d9541c1330ab27c8ad7454018faa80edb9ff2dbe6275fa556dfcf96a420d41
Contents?: true
Size: 1.43 KB
Versions: 2
Compression:
Stored size: 1.43 KB
Contents
require 'active_ldap/association/collection' module ActiveLdap module Association class HasMany < Collection private def insert_entry(entry) entry[primary_key] = @owner[@options[:foreign_key_name]] entry.save end def find_target foreign_base_key = primary_key filter = @owner[@options[:foreign_key_name], true].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.collect do |key, val| "(#{key}=#{val})" end.join foreign_class.find(:all, :filter => "(|#{filter})") end def delete_entries(entries) key = primary_key dn_attribute = foreign_class.dn_attribute filter = @owner[@options[:foreign_key_name], true].reject do |value| value.nil? end.collect do |value| "(#{key}=#{value})" end.join filter = "(&#{filter})" entry_filter = entries.collect do |entry| "(#{dn_attribute}=#{entry.id})" end.join entry_filter = "(|#{entry_filter})" foreign_class.update_all({primary_key => []}, "(&#{filter}#{entry_filter})") end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ruby-activeldap-0.8.1 | lib/active_ldap/association/has_many.rb |
ruby-activeldap-0.8.0 | lib/active_ldap/association/has_many.rb |