特に Searchlogic を使用している場合。必要なものを達成するために使用する名前付きスコープを推測するのはちょっと難しいです。
1 に答える
1
を使用して、モデルに定義されたすべての名前付きスコープを取得できます。
Model.scopes
=> {:one_scope_name=>#<Proc:0x0000...>, :other_scope_name=>#<Proc:0x0000...>, ... }
それはあなたにハッシュを与えるので、名前だけが必要な場合は、Model.scopes.keys
ただし、これにより、既に定義されているスコープのみが得られます。ドキュメント(フードセクションの下) で読むことができるように、 field_eq
etc のようなスコープは最初に使用されたときにのみ作成されるため、searchlogic によって生成されたスコープは役に立ちません。
「Searchlogic は、method_missing を使用して、これらの名前付きスコープをすべて作成します。method_missing にヒットすると、名前付きスコープを作成し、その名前付きスコープの method missing に二度とヒットしないようにします。一種のキャッシング メカニズムです。ActiveRecord と同じように機能します」 find_by_*」メソッド。この方法では、必要な名前付きスコープのみが作成され、それ以上のものは作成されません。"
于 2010-05-10T16:41:19.443 に答える