如果您的数据库中有两列first_name
和last_name
,那么Ransack wiki中给出的5个示例中的任何一个实际上都不会使用单个输入字段对全名提供正确的全面搜索
在user.rb
我有:
ransacker :full_name do |parent|
Arel::Nodes::InfixOperation.new('||',
Arel::Nodes::InfixOperation.new('||',
parent.table[:first_name], Arel::Nodes.build_quoted(' ')
),
parent.table[:last_name]
)
end
搜索表格如下:
= f.search_field :full_name_cont
在数据库中,用户的 first_name: Benjamin
和 last_name: Zobrist
。
示例1(正常):如果您搜索Benjamin Z
,代码段将按预期提取记录
示例2(无效):如果您搜索Ben Zobrist
,则不会提取记录。
如何让示例2工作?
答案 0 :(得分:0)
好像您正在寻找通过多列模糊匹配的全文搜索。我不确定是否可以轻松解决这个问题。
您可以使用另一个(计算的)列,其中包含全名值,可以像您一样使用数据库的全文功能进行搜索。您还可以使用SQL视图并对其执行搜索。如果即使没有产生结果,你也可能不得不采用像Elasticsearch,Solr这样的全面搜索解决方案......