Ruby on rails 如何在where查询中执行模型方法名?
我有一个users表,它有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
名字
和姓氏
。在“我的用户索引”页面上,有一个文本字段,用于搜索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,您可以在内存中加载所有用户,并对每个用户调用该方法,但是,如果您的应用程序在生产中被超过几个用户使用,则不应该这样做。