如何在查询中执行模型方法名称?

时间:2017-03-24 13:56:35

标签: ruby-on-rails ruby postgresql ruby-on-rails-4

我的用户表包含first_namelast_name。在我的用户索引页面上,有first_namelast_name搜索的文本字段。

如果我使用first_namelast_name进行搜索,则可以正常使用。但是如果我在文本字段中输入全名,那么它不会给我任何结果

我的User型号

def fullname
  first_name + last_name
end

我的查询

User.where("lower(first_name) like ? or lower(last_name) like ?", "%#{params[:fullname].downcase}%", "%#{params[:fullname].downcase}%")

1 个答案:

答案 0 :(得分:1)

搜索时连接两个名称:

User.where(
  "(LOWER(first_name) || ' ' || LOWER(last_name)) LIKE ?",
  "%#{params[:fullname].downcase}%"
)