Module: Poros::Relations
- Included in:
- Poros
- Defined in:
- lib/poros/relations.rb
Instance Method Summary collapse
- #belongs_to(key, class_name: nil, foreign_key: nil, primary_key: :uuid) ⇒ Object
- #has_many(key, class_name: nil, foreign_key: nil, primary_key: :uuid) ⇒ Object
Instance Method Details
#belongs_to(key, class_name: nil, foreign_key: nil, primary_key: :uuid) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/poros/relations.rb', line 14 def belongs_to(key, class_name: nil, foreign_key: nil, primary_key: :uuid) define_method key do object = constantize(class_name || key) foreign_method = (foreign_key || (key.to_s + '_uuid')).to_sym primary_attr = primary_key || (key.to_s + '_uuid') object.where(primary_attr => self.send(foreign_method)).first end define_method key.to_s + '=' do |value| foreign_attr = foreign_key || (key.to_s + '_uuid=') primary_method = primary_key || (key.to_s + '_uuid') self.send(foreign_attr, value.send(primary_method)) end end |
#has_many(key, class_name: nil, foreign_key: nil, primary_key: :uuid) ⇒ Object
3 4 5 6 7 8 9 10 11 12 |
# File 'lib/poros/relations.rb', line 3 def has_many(key, class_name: nil, foreign_key: nil, primary_key: :uuid) define_method key do foreign_key = (foreign_key || self.class.to_s.downcase + '_uuid').to_sym object = constantize(singularize(class_name || key)) primary_value = self.send(primary_key) object.where(foreign_key => primary_value) end end |