Mongoid::Paranoiaで論理削除したドキュメントも一緒くたに問い合わせる
hatena.vimの動作確認も兼ねて。
unscoped で論理削除されたものも引っ張ってこれるかと思ったら違った。
# mongoid-2.0.2/lib/mongoid/paranoia.rb <中略...> module ClassMethods #:nodoc: # Override the default +Criteria+ accessor to only get existing # documents. Passes all arguments up to +NamedScope.criteria+ # # Returns: # # A +Criteria+ for deleted_at not existing. def criteria(*args) super.where(:deleted_at.exists => false) end # Find deleted documents # # Examples: # # <tt>Person.deleted</tt> # all deleted employees # <tt>Company.first.employees.deleted</tt> # works with a join # <tt>Person.deleted.find("4c188dea7b17235a2a000001").first</tt> def deleted where(:deleted_at.exists => true) end end <中略...>
Mongoid::Paranoiaを使うとcriteriaが上書きされるんですね。だから unscoped とかしてもだめだったのか。
削除されたものは deleted で取れるけど、論理削除関係なく問い合せたいときはどうするんだろう。
module Mongoid::Paranoia::ClassMethods def with_deleted c = criteria c.selector.clear c end end
足してその場をしのいだ。