簡體   English   中英

在Ruby on Rails中顯示模型的所有可用命名范圍

[英]display all available named scopes of a model in Ruby on Rails

特別是在使用Searchlogic時。 我很難猜測要使用什么命名范圍來實現所需的功能。

您可以使用以下方法獲取模型的所有已定義命名作用域

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

它為您提供了一個哈希值,因此,如果僅需要名稱,請使用Model.scopes.keys

但這只會為您提供已經定義的范圍。 它不會幫助您找到由searchlogic生成的范圍,因為,正如您可以在文檔中了解的那樣 (位於field_eq ),僅在首次使用時才創建諸如field_eq等的范圍:

“ Searchlogic利用method_missing來創建所有這些命名范圍。當它命中method_missing時,它將創建一個命名范圍以確保它再也不會擊中該命名范圍所缺少的方法。一種緩存機制。它的工作方式與ActiveRecord的“ find_by_ *”方法。這樣,僅創建您需要的命名作用域,僅此而已。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM