[英]“No valid predicate” error when upgraded from Meta_search to Ransack?
我有一个ActiveRecord模型,其方法定义如下:
def state
if deleted?
:deleted
else
:expired
end
end
'search_method'在模型中定义为:
search_method:state
在视图中:
= form.select:state,{:expired =>'Expired',:deleted =>'Deleted'} .invert,:include_blank =>'All'
使用Meta_search ,这种方法运行正常。 但是当我用Ransack替换gem时,我得到:Sample Controller中的ArgumentError没有状态的有效谓词。
我正在从meta_search search_methods中跟踪此行为,因此我可能采取了错误的方法。 有人帮我吗?
Ransack使用添加到您正在搜索的字段末尾的谓词来指示如何搜索它。 如果您的模型具有以下属性:state
,则可以使用form.select :state_match,
搜索与“已过期”或“已删除”匹配的状态form.select :state_match,
其中_match
表示将记录与您选择的任何状态进行匹配。 (像_cont
(包含)或_start
(以)开头)。
Ransack使SQL查询能够查找记录,因此如果您的模型上有一个属性,例如:deleted_at
您可以按存在或缺少搜索。 它不会查看方法,只会查看存储在db中的信息。
更多谓词和信息在这里: https : //github.com/activerecord-hackery/ransack/wiki/Basic-Searching
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.