Module: Poros::Relations

Included in:
Poros
Defined in:
lib/poros/relations.rb

Instance Method Summary collapse

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