Sha256: 7869606a13abbec26d80cea3e83b68a1aefc05dd37cd5b0944254564f5c50b6a

Contents?: true

Size: 1.51 KB

Versions: 4

Compression:

Stored size: 1.51 KB

Contents

require 'active_ldap/association/collection'
require 'active_ldap/association/has_many_utils'

module ActiveLdap
  module Association
    class HasManyWrap < Collection
      include HasManyUtils

      private
      def insert_entry(entry)
        old_value = @owner[@options[:wrap], true]
        _primary_key = primary_key
        if _primary_key == "dn"
          old_value = dn_values_to_string_values(old_value)
        end
        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]
        _primary_key = primary_key
        if _primary_key == "dn"
          old_value = dn_values_to_string_values(old_value)
        end
        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
        targets, requested_targets = collect_targets(:wrap, true)
        return [] if targets.nil?

        found_targets = {}
        foreign_base_key = primary_key
        targets.each do |target|
          found_targets[target[foreign_base_key]] ||= target
        end

        klass = foreign_class
        requested_targets.collect do |name|
          found_targets[name] || klass.new(name)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
activeldap-1.1.0 lib/active_ldap/association/has_many_wrap.rb
activeldap-1.0.2 lib/active_ldap/association/has_many_wrap.rb
activeldap-1.0.9 lib/active_ldap/association/has_many_wrap.rb
activeldap-1.0.1 lib/active_ldap/association/has_many_wrap.rb