module RiakRecord::Associations::ClassMethods
Public Instance Methods
belongs_to_riak(association_name, options = {})
click to toggle source
# File lib/riak_record/associations.rb, line 27 def belongs_to_riak(association_name, options = {}) class_name = options[:class_name] ||= association_name.to_s.split("_").collect(&:capitalize).join foreign_key = options[:foreign_key] || "#{association_name}_id" if options[:link] raise ArgumentError, "link option only available for instances of RiakRecord" unless self < RiakRecord::Base link_definitions[association_name.to_sym] = {:class_name => class_name, :foreign_key => foreign_key} end method_def = <<-END_OF_RUBY def #{association_name} @belongs_to_riak_#{association_name} = nil if @belongs_to_riak_#{association_name} && @belongs_to_riak_#{association_name}.id.to_s != Array(#{foreign_key}).first.to_s related_id = Array(#{foreign_key}).first @belongs_to_riak_#{association_name} ||= #{class_name}.find(related_id) if related_id @belongs_to_riak_#{association_name} end def #{association_name}=(obj) raise ArgumentError, "not an instance of RiakRecord" unless obj.kind_of?(RiakRecord::Base) @belongs_to_riak_#{association_name} = obj self.#{foreign_key} = obj.id end END_OF_RUBY class_eval method_def end
has_many_riak(association_name, options = {})
click to toggle source
# File lib/riak_record/associations.rb, line 56 def has_many_riak(association_name, options = {}) class_name = options[:class_name] foreign_key = options[:foreign_key] class_name && foreign_key or raise ArgumentError, "has_many_riak requires class_name and foreign_key options" method_def = <<-END_OF_RUBY def #{association_name} @has_many_riak_#{association_name} ||= #{class_name}.where(:#{foreign_key} => self.id.to_s) end END_OF_RUBY class_eval method_def end
link_definitions()
click to toggle source
# File lib/riak_record/associations.rb, line 23 def link_definitions @link_definitions ||= {} end