# File lib/active_mongoid/associations/metadata.rb, line 63 def primary_key @primary_key ||= (self[:primary_key] || primary_key_default) end
class ActiveMongoid::Associations::Metadata
Public Class Methods
new(properties = {})
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 15 def initialize(properties = {}) merge!(properties) end
Public Instance Methods
as()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 7 def as self[:as] end
as?()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 11 def as? !!as end
autosave()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 19 def autosave self[:autosave] end
autosave?()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 23 def autosave? !!autosave end
builder(base, object)
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 27 def builder(base, object) relation.builder(base, self, object) end
class_name()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 82 def class_name (self[:class_name] || name.to_s.singularize.titleize.delete(' ')).sub(/\A::/,"") end
criteria(object, type = nil)
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 35 def criteria(object, type = nil) query = relation.criteria(self, object, type) if order query = query.respond_to?(:order_by) ? query.order_by(order) : query.order(order) end query end
dependent()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 195 def dependent self[:dependent] end
destructive?()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 199 def destructive? @destructive ||= (dependent == :delete || dependent == :destroy) end
determine_foreign_key()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 67 def determine_foreign_key return self[:foreign_key].to_s if self[:foreign_key] if relation.stores_foreign_key? relation.foreign_key(name) else inverse_metadata.foreign_key end end
determine_inverse_for(field)
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 135 def determine_inverse_for(field) relation.stores_foreign_key? && polymorphic? ? "#{name}_#{field}" : nil end
determine_inverse_relation()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 171 def determine_inverse_relation default = foreign_key_match || klass.am_relations[inverse_klass.name.underscore] return default.name if default klass.am_relations.each_pair do |key, meta| next if meta.name == name if meta.class_name == inverse_class_name return key.to_sym end end return nil end
determine_inverses()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 161 def determine_inverses return [ inverse_of ] if has_key?(:inverse_of) return [ as ] if has_key?(:as) [ inverse_relation ] end
determine_key()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 59 def determine_key relation.stores_foreign_key? ? foreign_key : primary_key end
foreign_key()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 47 def foreign_key @foreign_key ||= determine_foreign_key end
foreign_key_match()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 183 def foreign_key_match if fk = self[:foreign_key] relations_metadata.detect do |meta| fk == meta.foreign_key if meta.stores_foreign_key? end end end
foreign_key_setter()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 51 def foreign_key_setter @foreign_key_setter ||= "#{foreign_key}=" end
inverse(other = nil)
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 143 def inverse(other = nil) invs = inverses(other) invs.first if invs.count == 1 end
inverse_class_name()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 106 def inverse_class_name self[:as] || self[:inverse_class_name] end
inverse_klass()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 102 def inverse_klass @inverse_klass ||= inverse_class_name.constantize if inverse_class_name end
inverse_metadata(object = nil)
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 156 def inverse_metadata(object = nil) object = object || object_class object.reflect_on_am_association(inverse(object)) end
inverse_of()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 148 def inverse_of self[:inverse_of] end
inverse_relation()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 167 def inverse_relation @inverse_relation ||= determine_inverse_relation end
inverse_setter(other = nil)
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 152 def inverse_setter(other = nil) "#{inverse(other)}=" end
inverse_type()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 139 def inverse_type @inverse_type ||= determine_inverse_for(:type) end
inverse_type_setter()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 223 def inverse_type_setter @inverse_type_setter ||= "#{inverse_type}=" end
inverses(other = nil)
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 110 def inverses(other = nil) if self[:polymorphic] lookup_inverses(other) else @inverses ||= determine_inverses end end
key()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 43 def key relation.stores_foreign_key? ? foreign_key : primary_key end
lookup_inverses(other)
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 122 def lookup_inverses(other) return [ inverse_of ] if inverse_of if other matches = [] other.class.am_relations.values.each do |meta| if meta.as.to_s == name && meta.class_name == inverse_class_name matches.push(meta.name) end end matches end end
name()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 86 def name self[:name].to_s end
object_class()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 77 def object_class class_name.constantize end
Also aliased as: klass
object_name()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 90 def object_name name.to_s.singularize end
order()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 31 def order self[:order] end
plural_anme()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 94 def plural_anme name.to_s.pluralize end
polymorphic?()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 118 def polymorphic? @polymorphic ||= (!!self[:as] || !!self[:polymorphic]) end
primary_key()
click to toggle source
relation()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 98 def relation self[:relation] end
relations_metadata()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 191 def relations_metadata klass.am_relations.values end
type()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 207 def type @type ||= polymorphic? ? "#{as}_type" : nil end
type_setter()
click to toggle source
# File lib/active_mongoid/associations/metadata.rb, line 55 def type_setter @type_setter ||= "#{type}=" end