module GreyscaleRecord::Associatable
Public Class Methods
belongs_to( name, opts = {} )
click to toggle source
# File lib/greyscale_record/associatable.rb, line 13 def belongs_to( name, opts = {} ) association = Associations::BelongsTo.new( self, name, opts ) process association index association.key end
has_many( name, opts = {} )
click to toggle source
# File lib/greyscale_record/associatable.rb, line 23 def has_many( name, opts = {} ) process Associations::HasMany.new( self, name, opts ) end
has_one( name, opts = {} )
click to toggle source
# File lib/greyscale_record/associatable.rb, line 19 def has_one( name, opts = {} ) process Associations::HasOne.new( self, name, opts ) end
Protected Class Methods
associate( association )
click to toggle source
# File lib/greyscale_record/associatable.rb, line 34 def associate( association ) self.__associations = __associations.merge association.name => association end
methodize( association )
click to toggle source
# File lib/greyscale_record/associatable.rb, line 38 def methodize( association ) define_method association.name do begin self._cached_associations ||= {} unless self._cached_associations.has_key? association.name result = association.klass( self ).send( association.action, association.query( self ) ) self._cached_associations[association.name] = result end self._cached_associations[association.name] rescue GreyscaleRecord::Errors::RecordNotFound => e nil end end end
process( association )
click to toggle source
# File lib/greyscale_record/associatable.rb, line 29 def process( association ) associate association methodize association end