2010-05-10 37 views

回答

1

你可以得到所有定義的命名範圍爲模型,利用

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

它給你一個哈希值,所以如果你想只名稱,使用Model.scopes.keys

但是,這會給你只範圍,已經定義。它不會幫你會範圍,通過searchlogic產生的,因爲你可以在閱讀documentation(引擎蓋下段),創建像field_eq等範圍,只有當他們被第一次使用:

「Searchlogic利用method_missing的 創建所有這些命名範圍的。 當它擊中的method_missing它創建 一個名爲範圍,以確保它不會 命中方法缺少名爲 範圍試。排序緩存 機制。它可以在同一 時尚作爲ActiveRecord的「find_by_ *」 方法。這種方式只有名爲 您需要的示波器已創建,並且只有 。「

+0

太好了,謝謝!很高興有人明白 – jaycode 2010-05-10 18:31:23

+1

似乎這種方法不再可用 – 2012-07-03 06:58:23