首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Rails中搜索名称、姓氏或全名

在Rails中搜索名称、姓氏或全名
EN

Stack Overflow用户
提问于 2016-06-09 12:02:22
回答 1查看 1.1K关注 0票数 2

我刚刚开始在Rails中进行开发,并试图在我的用户模式下定义一个搜索范围。使用以下范围,我可以根据用户的名字或姓氏搜索用户:

代码语言:javascript
复制
  scope :_s, -> (s) {    
    where(
    'unaccent(LOWER(email)) like unaccent(LOWER(?))
    OR unaccent(LOWER(first_name)) like unaccent(LOWER(?))
    OR unaccent(LOWER(last_name)) like unaccent(LOWER(?))',
    "%#{s}%", "%#{s}%","%#{s}%") }

我找不到我的范围去搜索全名,我想下面的内容会有效的:

代码语言:javascript
复制
  scope :_s, -> (s) {
    select('(first_name || " " || last_name) as \'full_name\', *')  
    where(
    'unaccent(LOWER(email)) like unaccent(LOWER(?))
    OR unaccent(LOWER(first_name)) like unaccent(LOWER(?))
    OR unaccent(LOWER(last_name)) like unaccent(LOWER(?))
    OR unaccent(LOWER(full_name)) like unaccent(LOWER(?))',
    "%#{s}%", "%#{s}%","%#{s}%","%#{s}%") }

但这又回来了

未定义的列:错误:列"full_name“不存在

我知道我的数据库认为我在数据库中寻找记录,但是我如何告诉它查看上面定义的full_name呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-09 12:13:29

这就是SQL别名的工作方式,where子句对select子句中定义的别名一无所知。替换

代码语言:javascript
复制
unaccent(LOWER(full_name))

使用

代码语言:javascript
复制
unaccent(LOWER(first_name || \' \' || last_name))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37725452

复制
相关文章

相似问题

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