module JsonApiResource::Associatable
Public Class Methods
belongs_to( name, opts = {} )
click to toggle source
# File lib/json_api_resource/associatable.rb, line 13 def belongs_to( name, opts = {} ) process Associations::BelongsTo.new( self, name, opts ) end
has_many( name, opts = {} )
click to toggle source
# File lib/json_api_resource/associatable.rb, line 21 def has_many( name, opts = {} ) if opts[:prefetched_ids] process Associations::HasManyPrefetched.new( self, name, opts ) else process Associations::HasMany.new( self, name, opts ) end end
has_one( name, opts = {} )
click to toggle source
# File lib/json_api_resource/associatable.rb, line 17 def has_one( name, opts = {} ) process Associations::HasOne.new( self, name, opts ) end
Private Class Methods
add_association(association)
click to toggle source
# File lib/json_api_resource/associatable.rb, line 36 def add_association(association) self._associations = _associations.merge association.name => association end
methodize( association )
click to toggle source
# File lib/json_api_resource/associatable.rb, line 40 def methodize( association ) define_method association.name do self._cached_associations ||= {} unless self._cached_associations.has_key? association.name if association.callable?(self) result = association.klass.send( association.action, association.query(self) ) result = association.post_process result else result = association.nil_default end self._cached_associations[association.name] = result end self._cached_associations[association.name] end end
process(association)
click to toggle source
# File lib/json_api_resource/associatable.rb, line 31 def process(association) add_association association methodize association end