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