rails-4中不区分大小写的活动记录查询

时间:2015-02-15 12:28:39

标签: search ruby-on-rails-4 activerecord

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



@user = User.find_by_username(params[:username].downcase)




3 个答案:

答案 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