module ZTK::DSL::Core::Relations::HasMany::ClassMethods
@author Zachary Patten <zpatten AT jovelabs DOT io>
Public Instance Methods
has_many(key, options={})
click to toggle source
# File lib/ztk/dsl/core/relations/has_many.rb, line 43 def has_many(key, options={}) has_many_relations[key] = { :class_name => key.to_s.classify, :key => key }.merge(options) define_method(key) do |*args| if args.count == 0 get_has_many_reference(key) else send("#{key}=", *args) end end define_method("#{key}=") do |value| set_has_many_reference(key, value) end define_method(key.to_s.singularize) do |id=nil, &block| options = self.class.has_many_relations[key] data = options[:class_name].constantize.new(id, &block) get_has_many_reference(key) << data klass = self.class.to_s.demodulize.singularize.downcase data.send("#{klass}=", self) data end end