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

足してその場をしのいだ。