class ActiveMongoid::Associations::Binding

Attributes

__metadata__[R]
base[R]
target[R]

Public Class Methods

new(base, target, metadata) click to toggle source
# File lib/active_mongoid/associations/binding.rb, line 10
def initialize(base, target, metadata)
  @base = base
  @target = target
  @__metadata__ = metadata
end

Private Instance Methods

bind_foreign_key(base, id) click to toggle source
# File lib/active_mongoid/associations/binding.rb, line 23
def bind_foreign_key(base, id)
  return if base.send(__metadata__.foreign_key) == id
  base.send(__metadata__.foreign_key_setter, id)
end
bind_from_relational_parent(object) click to toggle source
# File lib/active_mongoid/associations/binding.rb, line 61
def bind_from_relational_parent(object)
  check_inverse!(object)
  bind_foreign_key(object, record_id(base))
  bind_polymorphic_type(object, base.class.name)
  bind_inverse(object, base)
end
bind_inverse(object, inverse) click to toggle source
# File lib/active_mongoid/associations/binding.rb, line 40
def bind_inverse(object, inverse)
  unless _binding?
    _binding do
      if object.respond_to?(__metadata__.inverse_setter)
        object.send(__metadata__.inverse_setter, inverse)
      end
    end
  end
end
bind_polymorphic_inverse_type(base, name) click to toggle source
# File lib/active_mongoid/associations/binding.rb, line 34
def bind_polymorphic_inverse_type(base, name)
  if __metadata__.inverse_type
    base.send(__metadata__.inverse_type_setter, name)
  end
end
bind_polymorphic_type(base, name) click to toggle source
# File lib/active_mongoid/associations/binding.rb, line 28
def bind_polymorphic_type(base, name)
  if __metadata__.type
    base.send(__metadata__.type_setter, name)
  end
end
check_inverse!(object) click to toggle source
# File lib/active_mongoid/associations/binding.rb, line 18
def check_inverse!(object)
  # check for inverse relation and raise exception when not
  true
end
record_id(base) click to toggle source
# File lib/active_mongoid/associations/binding.rb, line 50
def record_id(base)
  base.send(__metadata__.primary_key)
end
set_base_metadata() click to toggle source
# File lib/active_mongoid/associations/binding.rb, line 54
def set_base_metadata
  inverse_metadata = __metadata__.inverse_metadata(target)
  if inverse_metadata != __metadata__ && !inverse_metadata.nil?
    base.__metadata__ = inverse_metadata
  end
end
unbind_from_relational_parent(object) click to toggle source
# File lib/active_mongoid/associations/binding.rb, line 68
def unbind_from_relational_parent(object)
  check_inverse!(object)
  bind_foreign_key(object, nil)
  bind_polymorphic_type(object, nil)
  bind_inverse(object, nil)
end