Module: Opium::Model::Relatable::ClassMethods

Defined in:
lib/opium/model/relatable.rb

Instance Method Summary collapse

Instance Method Details

#belongs_to(relation_name, options = {}) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/opium/model/relatable.rb', line 32

def belongs_to( relation_name, options = {} )
  ( :belongs_to, relation_name, options )
  field relation_name, type: Reference, 
    default: ->( model ) do
      { metadata: relations[relation_name], context: model } 
    end
end

#has_and_belongs_to_many(relation_name, options = {}) ⇒ Object



19
20
21
# File 'lib/opium/model/relatable.rb', line 19

def has_and_belongs_to_many( relation_name, options = {} )
  ( :has_and_belongs_to_many, relation_name, options )
end

#has_many(relation_name, options = {}) ⇒ Object



23
24
25
26
# File 'lib/opium/model/relatable.rb', line 23

def has_many( relation_name, options = {} )
  ( :has_many, relation_name, options )
  field relation_name, type: Relation, default: -> { relations[relation_name].target_class_name }
end

#has_one(relation_name, options = {}) ⇒ Object



28
29
30
# File 'lib/opium/model/relatable.rb', line 28

def has_one( relation_name, options = {} )
  ( :has_one, relation_name, options )
end

#relationsObject



15
16
17
# File 'lib/opium/model/relatable.rb', line 15

def relations
  @relations ||= {}.with_indifferent_access
end