module Opium::Model::Relatable::ClassMethods
Public Instance Methods
belongs_to( relation_name, options = {} )
click to toggle source
# File lib/opium/model/relatable.rb, line 32 def belongs_to( relation_name, options = {} ) create_relation_metadata_from( :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 = {} )
click to toggle source
# File lib/opium/model/relatable.rb, line 19 def has_and_belongs_to_many( relation_name, options = {} ) create_relation_metadata_from( :has_and_belongs_to_many, relation_name, options ) end
has_many( relation_name, options = {} )
click to toggle source
# File lib/opium/model/relatable.rb, line 23 def has_many( relation_name, options = {} ) create_relation_metadata_from( :has_many, relation_name, options ) field relation_name, type: Relation, default: -> { relations[relation_name].target_class_name } end
has_one( relation_name, options = {} )
click to toggle source
# File lib/opium/model/relatable.rb, line 28 def has_one( relation_name, options = {} ) create_relation_metadata_from( :has_one, relation_name, options ) end
relations()
click to toggle source
# File lib/opium/model/relatable.rb, line 15 def relations @relations ||= {}.with_indifferent_access end
Private Instance Methods
create_relation_metadata_from( relation_type, relation_name, options )
click to toggle source
# File lib/opium/model/relatable.rb, line 42 def create_relation_metadata_from( relation_type, relation_name, options ) relations[relation_name] = Metadata.new( self, relation_type, relation_name, options ) end