2010-05-10 4 views

Répondre

1

Vous pouvez obtenir tous les champs nommés définis pour un modèle, en utilisant

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

Il vous donne un hachage, donc si vous voulez que les noms, utilisez Model.scopes.keys

Mais cela vous donnera seulement des étendues, qui sont déjà définis. Il ne vous aidera pas vous Scopes, généré par searchlogic, parce que, comme vous pouvez le lire dans documentation (Sous la section capot), portées comme field_eq etc sont créés seulement quand ils sont d'abord utilisés:

« Utilise Searchlogic method_missing pour créer tous ces champs nommés. Quand il frappe method_missing il crée un champ nommé pour assurer qu'elle ne sera jamais méthode de succès manquant pour que le nom champ nouveau. une sorte de mécanisme de mise en cache . il travaille dans le même mode comme "find_by_ *" de ActiveRecord méthodes de cette manière que lenomméportées dont vous avez besoin sont créés et rien de plus. "

+0

Super, merci! content que quelqu'un comprenne – jaycode

+1

On dirait que cette méthode n'est plus disponible –