отобразить все доступные именованные области действия модели в Ruby on Rails - PullRequest
0 голосов
/ 10 мая 2010

Особенно, когда вы используете Searchlogic. Мне довольно сложно догадаться, какую именованную область использовать для достижения того, что мне нужно.

1 Ответ

1 голос
/ 10 мая 2010

Вы можете получить все определенные именованные области для модели, используя

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

Он дает вам хэш, поэтому, если вы хотите только имена, используйте Model.scopes.keys

Но это даст вам только те области, которые уже определены. Это не поможет вам, области, сгенерированные searchlogic, потому что, как вы можете прочитать в документации (в разделе «Под капотом»), области типа field_eq и т. Д. Создаются только при первом их использовании:

"Searchlogic использует method_missing создать все эти именованные области. Когда он попадает в method_missing, он создает именованная область, чтобы гарантировать, что это никогда не будет отсутствует метод попадания для этого имени снова сфера Вроде кеширование механизм. Работает в том же мода как ActiveRecord "find_by_ *" методы. Таким образом, только названный необходимые области созданы и больше ничего. "

...