Class: MassiveRecord::ORM::Relations::Metadata
- Inherits:
-
Object
- Object
- MassiveRecord::ORM::Relations::Metadata
- Defined in:
- lib/massive_record/orm/relations/metadata.rb
Overview
The master of metadata related to a relation. For instance; references_one :employee, :foreign_key => “person_id”, :class_name => “Person”
Instance Attribute Summary collapse
- #class_name ⇒ Object
-
#find_with ⇒ Object
Returns the value of attribute find_with.
- #foreign_key ⇒ Object
- #name ⇒ Object
- #polymorphic ⇒ Object
-
#records_starts_from ⇒ Object
Returns the value of attribute records_starts_from.
- #relation_type ⇒ Object
- #store_in ⇒ Object
Instance Method Summary collapse
- #==(other) ⇒ Object (also: #eql?)
- #foreign_key_setter ⇒ Object
- #hash ⇒ Object
-
#initialize(name, options = {}) ⇒ Metadata
constructor
A new instance of Metadata.
- #new_relation_proxy(proxy_owner) ⇒ Object
- #persisting_foreign_key? ⇒ Boolean
- #polymorphic? ⇒ Boolean
- #polymorphic_type_column ⇒ Object
- #polymorphic_type_column_setter ⇒ Object
- #proxy_target_class ⇒ Object
- #represents_a_collection? ⇒ Boolean
- #store_foreign_key_in ⇒ Object
- #store_foreign_key_in=(column_family) ⇒ Object
Constructor Details
#initialize(name, options = {}) ⇒ Metadata
Returns a new instance of Metadata.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 16 def initialize(name, = {}) . self.name = name self.foreign_key = [:foreign_key] if .has_key? :store_in self.store_in = [:store_in] elsif .has_key? :store_foreign_key_in self.store_foreign_key_in = [:store_foreign_key_in] end self.class_name = [:class_name] self.find_with = [:find_with] self.records_starts_from = [:records_starts_from] if [:records_starts_from] self.polymorphic = [:polymorphic] end |
Instance Attribute Details
#class_name ⇒ Object
61 62 63 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 61 def class_name (@class_name || calculate_class_name).to_s end |
#find_with ⇒ Object
Returns the value of attribute find_with.
13 14 15 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 13 def find_with @find_with end |
#foreign_key ⇒ Object
44 45 46 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 44 def foreign_key (@foreign_key || calculate_foreign_key).to_s end |
#name ⇒ Object
32 33 34 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 32 def name @name.to_s if @name end |
#polymorphic ⇒ Object
88 89 90 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 88 def polymorphic !!@polymorphic end |
#records_starts_from ⇒ Object
Returns the value of attribute records_starts_from.
14 15 16 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 14 def records_starts_from @records_starts_from end |
#relation_type ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 36 def relation_type if @relation_type relation_type = @relation_type.to_s relation_type += "_polymorphic" if polymorphic? relation_type end end |
#store_in ⇒ Object
69 70 71 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 69 def store_in @store_in.to_s if @store_in end |
Instance Method Details
#==(other) ⇒ Object Also known as: eql?
102 103 104 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 102 def ==(other) other.instance_of?(self.class) && other.hash == hash end |
#foreign_key_setter ⇒ Object
48 49 50 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 48 def foreign_key_setter foreign_key+'=' end |
#hash ⇒ Object
107 108 109 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 107 def hash name.hash end |
#new_relation_proxy(proxy_owner) ⇒ Object
97 98 99 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 97 def new_relation_proxy(proxy_owner) proxy_class_name.constantize.new(:proxy_owner => proxy_owner, :metadata => self) end |
#persisting_foreign_key? ⇒ Boolean
83 84 85 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 83 def persisting_foreign_key? !!store_in && !records_starts_from end |
#polymorphic? ⇒ Boolean
92 93 94 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 92 def polymorphic? polymorphic end |
#polymorphic_type_column ⇒ Object
52 53 54 55 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 52 def polymorphic_type_column type_column = foreign_key.gsub(/_id$/, '') type_column + "_type" end |
#polymorphic_type_column_setter ⇒ Object
57 58 59 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 57 def polymorphic_type_column_setter polymorphic_type_column+'=' end |
#proxy_target_class ⇒ Object
65 66 67 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 65 def proxy_target_class class_name.constantize end |
#represents_a_collection? ⇒ Boolean
113 114 115 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 113 def represents_a_collection? relation_type == 'references_many' end |
#store_foreign_key_in ⇒ Object
73 74 75 76 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 73 def store_foreign_key_in ActiveSupport::Deprecation.warn("store_foreign_key_in is deprecated. Use store_in instead!") store_in end |
#store_foreign_key_in=(column_family) ⇒ Object
78 79 80 81 |
# File 'lib/massive_record/orm/relations/metadata.rb', line 78 def store_foreign_key_in=(column_family) ActiveSupport::Deprecation.warn("store_foreign_key_in is deprecated. Use store_in instead!") self.store_in = column_family end |