首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Ransack搜索部分full_name,其中first_name和last_name是数据库列

使用Ransack搜索部分full_name,其中first_name和last_name是数据库列
EN

Stack Overflow用户
提问于 2016-11-03 19:09:02
回答 1查看 596关注 0票数 1

Ransack wiki中给出的5个示例中,如果数据库中有两个列为first_namelast_name,那么实际上没有一个完整的全名搜索,只有一个输入字段。

user.rb中,我有:

代码语言:javascript
运行
复制
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

搜寻表格如下:

代码语言:javascript
运行
复制
= f.search_field :full_name_cont

数据库中有一个具有first_name: Benjaminlast_name: Zobrist的用户。

示例1(工作):--如果您搜索Benjamin Z,代码段将按预期提取记录

示例2(不起作用):,如果您搜索Ben Zobrist,它不会提取记录。

我怎样才能让例2工作?

EN

回答 1

Stack Overflow用户

发布于 2017-01-05 12:56:55

似乎你在寻找多列上模糊匹配的全文搜索。我不确定有什么简单的办法可以绕过这件事。

您可以有另一个(计算过的)列,它的值为全名,它可以用于搜索,就像您描述的那样,甚至可以使用数据库的全文功能。您还可以使用SQL视图并对其执行搜索。如果即使这样也不能产生结果,那么你可能不得不使用一个成熟的搜索解决方案,比如Elasticsearch,Solr,……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40409447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档