Class: MassiveRecord::ORM::Relations::Proxy::EmbeddedIn

Inherits:
MassiveRecord::ORM::Relations::Proxy show all
Defined in:
lib/massive_record/orm/relations/proxy/embedded_in.rb

Direct Known Subclasses

EmbeddedInPolymorphic

Instance Attribute Summary

Attributes inherited from MassiveRecord::ORM::Relations::Proxy

#metadata, #proxy_owner, #proxy_target

Instance Method Summary collapse

Methods inherited from MassiveRecord::ORM::Relations::Proxy

#blank?, #initialize, #inspect, #is_a?, #load_proxy_target, #loaded!, #loaded?, #method_missing, #reload, #respond_to?, #to_param

Constructor Details

This class inherits a constructor from MassiveRecord::ORM::Relations::Proxy

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class MassiveRecord::ORM::Relations::Proxy

Instance Method Details

#replace(proxy_target, update_inverse_relation = true) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/massive_record/orm/relations/proxy/embedded_in.rb', line 7

def replace(proxy_target, update_inverse_relation = true)
  proxy_target_was = self.proxy_target

  super(proxy_target).tap do |proxy_target_is|
    if update_inverse_relation
      if proxy_target_is.present?
        unless proxy_target_is.respond_to? .inverse_of
          raise RelationMissing.new(
            "              Expected '\#{metadata.proxy_target_class}' to have an embedded\n              relation defined with name '\#{metadata.inverse_of}'.\n            TXT\n          )\n        end\n\n        if proxy_target_was.nil?\n          proxy_target_is.send(metadata.inverse_of).push proxy_owner\n        elsif proxy_target_was != proxy_target_is\n          proxy_target_was.send(metadata.inverse_of).delete(proxy_owner)\n          proxy_target_was.save if proxy_target_was.persisted?\n          proxy_target_is.send(metadata.inverse_of).push proxy_owner\n        end\n      end\n    end\n  end\nend\n"

#reset(force = false) ⇒ Object



34
35
36
37
38
# File 'lib/massive_record/orm/relations/proxy/embedded_in.rb', line 34

def reset(force = false)
  # Does nothing.. if we are resetting this inside of an embedded setting
  # we will lose the knowledge about parent.
  super if force
end