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

Case insensitive active record query in rails-4

目前我正在 rails 4 中的一个项目中工作,其中我有一个示例用户页面。com/username 但如果我在正确的情况下使用用户名,它只会找到记录,如何我可以在活动记录 rails 中执行不区分大小写的搜索吗? 在下面查看我的代码

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

您将不得不使用类似于 where("username ILIKE ?") 的东西。 ILIKE 或类似语法取决于您的数据库。

另一个选项可以是:

def self.search(query)
    where("lower(name) LIKE lower(?)", "%#{query}%") 
end

这适用于 sqlite 或 PostgreSQL。

您可以使用 Arel 表格。

# 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