class ActiveLdap::Association::Collection

Public Instance Methods

<<(*entries) click to toggle source
# File lib/active_ldap/association/collection.rb, line 18
def <<(*entries)
  add_entries(*entries)
end
Also aliased as: push, concat
concat(*entries)
Alias for: <<
delete(*entries) click to toggle source
# File lib/active_ldap/association/collection.rb, line 28
def delete(*entries)
  entries = flatten_deeper(entries).reject do |entry|
    @target.delete(entry) if entry.new_entry?
    entry.new_entry?
  end
  return if entries.empty?

  delete_entries(entries)
  entries.each do |entry|
    @target.delete(entry)
  end
end
each(&block) click to toggle source
# File lib/active_ldap/association/collection.rb, line 24
def each(&block)
  to_ary.each(&block)
end
exists?() click to toggle source
# File lib/active_ldap/association/collection.rb, line 62
def exists?
  load_target
  not @target.empty?
end
push(*entries)
Alias for: <<
replace(others) click to toggle source
# File lib/active_ldap/association/collection.rb, line 41
def replace(others)
  load_target

  entry = @target.first
  if entry.nil?
    deleted_entries = []
    added_entries = others
  else
    base_class = entry.class
    others = others.collect do |other|
      other = base_class.find(other) unless other.is_a?(base_class)
      other
    end
    deleted_entries = @target - others
    added_entries = others - @target
  end

  delete(deleted_entries)
  concat(added_entries)
end
reset() click to toggle source
# File lib/active_ldap/association/collection.rb, line 13
def reset
  @target = []
  @loaded = false
end
to_ary() click to toggle source
# File lib/active_ldap/association/collection.rb, line 8
def to_ary
  load_target
  @target.to_ary
end

Private Instance Methods

add_entries(*entries) click to toggle source
# File lib/active_ldap/association/collection.rb, line 79
def add_entries(*entries)
  result = true
  load_target

  flatten_deeper(entries).each do |entry|
    unless @owner.new_entry?
      infect_connection(entry)
      result &&= insert_entry(entry)
    end
    @target << entry
  end

  result && self
end
dn_values_to_string_values(values) click to toggle source
# File lib/active_ldap/association/collection.rb, line 94
def dn_values_to_string_values(values)
  values.collect do |value|
    if value.is_a?(DN)
      value.to_s
    else
      value
    end
  end
end
flatten_deeper(array) click to toggle source
# File lib/active_ldap/association/collection.rb, line 68
def flatten_deeper(array)
  array.collect do |element|
    element.respond_to?(:flatten) ? element.flatten : element
  end.flatten
end
insert_entry(entry) click to toggle source
# File lib/active_ldap/association/collection.rb, line 74
def insert_entry(entry)
  entry[@options[:foreign_key_name]] = @owner[@options[:local_key_name]]
  entry.save
end