class MongoMapper::Plugins::Associations::InForeignArrayProxy
Public Instance Methods
<<(*docs)
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 75 def <<(*docs) flatten_deeper(docs).each do |doc| inverse_association(doc) << proxy_owner doc.save end reset end
all(options={})
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 20 def all(options={}) query(options).all end
count(options={})
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 32 def count(options={}) query(options).count end
create(attrs={})
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 54 def create(attrs={}) doc = klass.create(attrs) if doc.persisted? inverse_association(doc) << proxy_owner doc.save reset end doc end
create!(attrs={})
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 64 def create!(attrs={}) doc = klass.create!(attrs) if doc.persisted? inverse_association(doc) << proxy_owner doc.save reset end doc end
delete_all(options={})
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 43 def delete_all(options={}) docs = query(options).fields(:_id).all klass.delete(docs.map { |d| d.id }) reset end
destroy_all(options={})
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 36 def destroy_all(options={}) all(options).each do |doc| doc.destroy end reset end
find(*args)
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 8 def find(*args) query.find(*scoped_ids(args)) end
find!(*args)
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 12 def find!(*args) query.find!(*scoped_ids(args)) end
first(options={})
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 24 def first(options={}) query(options).first end
last(options={})
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 28 def last(options={}) query(options).last end
nullify()
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 49 def nullify replace([]) reset end
paginate(options)
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 16 def paginate(options) query.paginate(options) end
replace(docs)
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 85 def replace(docs) doc_ids = docs.map do |doc| doc.save unless doc.persisted? inverse_association(doc) << proxy_owner doc.save doc.id end replace_selector = { options[:from] => proxy_owner.id } unless doc_ids.empty? replace_selector[:_id] = {"$not" => {"$in" => doc_ids}} end klass.collection.update_many(replace_selector, { "$pull" => { options[:from] => proxy_owner.id } }) reset end
Private Instance Methods
criteria()
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 114 def criteria {options[:from] => proxy_owner.id} end
find_target()
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 126 def find_target all end
inverse_association(doc)
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 130 def inverse_association(doc) doc.send(options[:as].to_s.pluralize) end
query(options={})
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 107 def query(options={}) klass.query({}. merge(association.query_options). merge(options). merge(criteria)) end
scoped_ids(args)
click to toggle source
# File lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb, line 118 def scoped_ids(args) valid = args.flatten.map do |id| id = ObjectId.to_mongo(id) if klass.using_object_id? id end valid.empty? ? nil : valid end