目前我正在使用rails 4中的一个项目,其中我在example.com/username上有一个用户页面,但只有在正确的情况下使用用户名才能找到记录,如何在活动状态下执行不区分大小写的搜索记录铁轨。 看看下面的代码
@user = User.find_by_username(params[:username].downcase)

答案 0 :(得分:2)
你必须使用与where("username ILIKE ?")
类似的东西。 ILIKE
或类似语法依赖于您的数据库。
答案 1 :(得分:1)
另一种选择可能是:
def self.search(query)
where("lower(name) LIKE lower(?)", "%#{query}%")
end
这适用于sqlite或PostgreSQL。
答案 2 :(得分:0)
您可以使用Arel Tables。
# Suppose the target username in DB is 'FooBAR'.
t = User.arel_table
@user = User.find_by(t[:username].matches 'foobar')
这将找到用户名为'FooBar','foobar','FOOBAR'等用户。
此处有更多详情:https://github.com/rails/arel。