module Consumerable::Associations::HasMany::ClassMethods
Public Instance Methods
has_many(association_name, options = {})
click to toggle source
# File lib/consumerable/associations/has_many.rb, line 7 def has_many(association_name, options = {}) define_method association_name do instance_variable_get(:"@#{association_name}") || Consumerable::Associations::HasManyProxy.new( self, options[:class_name].constantize, options[:class_name].constantize. send("_for_#{self.class.to_s.demodulize.downcase}", self.id), options[:source] ).tap do |proxy| instance_variable_set :"@#{association_name}", proxy end instance_variable_get :"@#{association_name}" end define_method "#{association_name}=" do |associated_objects| if associated_objects.is_a?(Hash) associated_objects = Array( options[:class_name].constanize.new( associated_objects[options[:class_name].demodulize.downcase] ) ) end instance_variable_set :"@#{association_name}", Consumerable::Associations::HasManyProxy.new( self, options[:class_name].constantize, associated_objects, options[:source] ) end end