module ZTK::DSL::Core::Relations::BelongsTo::ClassMethods
@author Zachary Patten <zpatten AT jovelabs DOT io>
Public Instance Methods
belongs_to(key, options={})
click to toggle source
# File lib/ztk/dsl/core/relations/belongs_to.rb, line 50 def belongs_to(key, options={}) belongs_to_relations[key] = { :class_name => key.to_s.classify, :key => key }.merge(options) define_method(key) do |*args| if args.count == 0 get_belongs_to_reference(key) else send("#{key}=", *args) end end define_method("#{key}=") do |value| set_belongs_to_reference(key, value) end define_method("#{key}_id") do |*args| if args.count == 0 attributes["#{key}_id".to_sym] else send("#{key}_id=".to_sym, args.first) end end define_method("#{key}_id=") do |value| options = self.class.belongs_to_relations[key] if value != attributes["#{key}_id".to_sym] item = options[:class_name].constantize.find(value).first set_belongs_to_reference(key, item) else value end end end