Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在where查询中执行模型方法名?_Ruby On Rails_Ruby_Postgresql_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 如何在where查询中执行模型方法名?

Ruby on rails 如何在where查询中执行模型方法名?,ruby-on-rails,ruby,postgresql,ruby-on-rails-4,Ruby On Rails,Ruby,Postgresql,Ruby On Rails 4,我有一个users表,它有名字和姓氏。在“我的用户索引”页面上,有一个文本字段,用于搜索first\u name和last\u name 如果我用first\u name或last\u name搜索,效果很好。但是如果我在文本字段中输入全名,那么它不会给我任何结果 我的用户型号 def fullname first_name + last_name end 我的问题 User.where("lower(first_name) like ? or lower(last_name) like

我有一个users表,它有
名字
姓氏
。在“我的用户索引”页面上,有一个文本字段,用于搜索
first\u name
last\u name

如果我用
first\u name
last\u name
搜索,效果很好。但是如果我在文本字段中输入全名,那么它不会给我任何结果

我的
用户
型号

def fullname
  first_name + last_name
end
我的问题

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

搜索时连接两个名称:

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

非常感谢。您的答案有效,但仍然可以使用模型方法名称进行搜索?@RoRDeveloper,否。除非有人实现一个数据库,该数据库可以像SQL一样有效地加载和执行随机Ruby代码。@RoRDeveloper,您可以在内存中加载所有用户,并对每个用户调用该方法,但是,如果您的应用程序在生产中被超过几个用户使用,则不应该这样做。