繁体   English   中英

从Meta_search升级到Ransack时“没有有效的谓词”错误?

[英]“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM