我有这种方法,效果很好:
def find
return User.where(:name=> params[:search])
end
我的问题是它区分大小写,因此如果我搜索"bob"
,则不会返回名称为大写的任何用户(例如"Bob"
)。有没有办法让它不区分大小写?
答案 0 :(得分:3)
您也可以使用
User.where('name ILIKE ?', params[:search])
答案 1 :(得分:1)
这应该这样做:
def find
User.where("lower(name) = ?", params[:search].downcase)
end
通过将db条目设置为小写并将搜索参数设置为小写,则不区分大小写不再是问题。
此外,Ruby中不需要return
语句,因为我们有隐式返回语句。
您可以将原始SQL传递给.where
命令。 lower()
是SQL中的函数,而不是Ruby,它将单个字符串参数作为小写字符串返回。它是Ruby中.downcase
的等价物。既然原始字符串和要比较的字符串都是小写的,则情况不再重要。
答案 2 :(得分:-1)
这样的事情:
def find
return User.where(:name=> params[:search].downcase)
end