# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 99 def primary_key_default "id" end
class ActiveMongoid::Associations::DocumentRelation::Referenced::Many
Private Class Methods
builder(base, meta, object)
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 107 def builder(base, meta, object) ActiveMongoid::Associations::Builders::Many.new(base, meta, object || []) end
criteria(metadata, object, type = nil)
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 111 def criteria(metadata, object, type = nil) crit = metadata.klass.where(metadata.foreign_key => object) if metadata.polymorphic? crit = crit.where(metadata.type => type.name) end crit end
foreign_key(name)
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 87 def foreign_key(name) "#{name}#{foreign_key_suffix}" end
foreign_key_default()
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 91 def foreign_key_default nil end
foreign_key_suffix()
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 95 def foreign_key_suffix "_id" end
macro()
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 103 def macro :has_many_documents end
primary_key_default()
click to toggle source
stores_foreign_key?()
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 83 def stores_foreign_key? false end
Private Instance Methods
binding()
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 13 def binding Bindings::Many.new(base, target, __metadata__) end
collection()
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 18 def collection klass.collection end
criteria()
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 9 def criteria Many.criteria(__metadata__, base.send(__metadata__.primary_key), base.class) end
method_missing(name, *args, &block)
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 71 def method_missing(name, *args, &block) if target.respond_to?(name) target.send(name, *args, &block) else klass.send(:with_scope, criteria) do criteria.public_send(name, *args, &block) end end end
persist_delayed(docs, inserts)
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 22 def persist_delayed(docs, inserts) unless docs.empty? collection.insert(inserts) docs.each do |doc| doc.new_record = false end end end
remove_all(conditions = nil, method = :delete_all)
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 42 def remove_all(conditions = nil, method = :delete_all) selector = conditions || {} removed = klass.send(method, selector.merge!(criteria.selector)) target.delete_if do |obj| if obj.matches?(selector) unbind_one(obj) and true end end removed end
remove_not_in(ids)
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 53 def remove_not_in(ids) removed = criteria.not_in(_id: ids) if __metadata__.destructive? removed.delete_all else removed.update_all(__metadata__.foreign_key => nil) end in_memory.each do |obj| if !ids.include?(obj.id) unbind_one(obj) target.delete(obj) if __metadata__.destructive? obj.destroyed = true end end end end
save_or_delay(doc, docs, inserts)
click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/many.rb, line 31 def save_or_delay(doc, docs, inserts) if doc.new_record? && doc.valid?(:create) doc.run_callbacks(:save) doc.run_callbacks(:create) docs.push(doc) inserts.push(doc.as_document) else doc.save end end