0

特に Searchlogic を使用している場合。必要なものを達成するために使用する名前付きスコープを推測するのはちょっと難しいです。

4

1 に答える 1

1

を使用して、モデルに定義されたすべての名前付きスコープを取得できます。

Model.scopes
=> {:one_scope_name=>#<Proc:0x0000...>, :other_scope_name=>#<Proc:0x0000...>, ... }

それはあなたにハッシュを与えるので、名前だけが必要な場合は、Model.scopes.keys

ただし、これにより、既に定義されているスコープのみが得られます。ドキュメント(フードセクションの下) で読むことができるように、 field_eqetc のようなスコープは最初に使用されたときにのみ作成されるため、searchlogic によって生成されたスコープは役に立ちません。

「Searchlogic は、method_missing を使用して、これらの名前付きスコープをすべて作成します。method_missing にヒットすると、名前付きスコープを作成し、その名前付きスコープの method missing に二度とヒットしないようにします。一種のキャッシング メカニズムです。ActiveRecord と同じように機能します」 find_by_*」メソッド。この方法では、必要な名前付きスコープのみが作成され、それ以上のものは作成されません。"

于 2010-05-10T16:41:19.443 に答える