class MarkMapper::Plugins::Associations::InArrayProxy
Public Instance Methods
<<(*docs)
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 81 def <<(*docs) flatten_deeper(docs).each do |doc| doc.save unless doc.persisted? unless ids.include?(doc.id) ids << doc.id end end reset end
all(options={})
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 21 def all(options={}) return [] if ids.blank? query(options).all end
count(options={})
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 36 def count(options={}) return 0 if ids.blank? options.blank? ? ids.size : query(options).count end
create(attrs={})
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 61 def create(attrs={}) doc = klass.create(attrs) if doc.persisted? ids << doc.id proxy_owner.save reset end doc end
create!(attrs={})
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 71 def create!(attrs={}) doc = klass.create!(attrs) if doc.persisted? ids << doc.id proxy_owner.save reset end doc end
delete_all(options={})
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 49 def delete_all(options={}) docs = query(options).fields(:_id).all docs.each { |doc| ids.delete(doc.id) } klass.delete(docs.map { |d| d.id }) reset end
destroy_all(options={})
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 41 def destroy_all(options={}) all(options).each do |doc| ids.delete(doc.id) doc.destroy end reset end
find(*args)
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 8 def find(*args) query.find(*scoped_ids(args)) end
find!(*args)
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 12 def find!(*args) query.find!(*scoped_ids(args)) end
first(options={})
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 26 def first(options={}) return nil if ids.blank? query(options).first end
last(options={})
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 31 def last(options={}) return nil if ids.blank? query(options).last end
nullify()
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 56 def nullify replace([]) reset end
paginate(options)
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 16 def paginate(options) return [] if ids.blank? query.paginate(options) end
replace(docs)
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 93 def replace(docs) doc_ids = docs.map do |doc| doc.save unless doc.persisted? doc.id end ids.replace(doc_ids.uniq) reset end
Private Instance Methods
criteria()
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 110 def criteria {:_id => ids} end
find_target()
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 122 def find_target return [] if ids.blank? all end
ids()
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 127 def ids proxy_owner[options[:in]] end
query(options={})
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 103 def query(options={}) klass. query(association.query_options). amend(options). amend(criteria) end
scoped_ids(args)
click to toggle source
# File lib/mark_mapper/plugins/associations/in_array_proxy.rb, line 114 def scoped_ids(args) valid = args.flatten.select do |id| id = ObjectId.to_marklogic(id) if klass.using_object_id? ids.include?(id) end valid.empty? ? nil : valid end