Rails中不区分大小写的搜索

我发现搜索我特别不想要字符大小的事情的最好方法是:

@tag = Rails.env.development? ? Category.where("LOWER(name) LIKE ?", "%#{params[:find]}%")[0] : Category.where("LOWER(name) ILIKE ?", "%#{params[:find]}%")[0] 

我必须有.env查找器,因为我使用Heroku,我不关心在我的开发机器上安装PostgreSQL。 不过,有没有像:

 @tag = Category.find_by_name(params[:find], case_sensitive: false) 

我们可以将选项传递给Rails中的find_by助手吗? 这将是一个很好的。

是的,Rails通过内置的Arel库或像Squeel这样的gem支持不区分大小写的查询。

我们可以将选项传递给Rails中的find_by助手吗? 这将是一个很好的…

,没有。 ( 参见API )
是的 ,那将是一个很好的。

您可能不接受这个答案,因为您的问题不是真正的问题
这可能是你投票失败的原因。

也许你也可以小写params[:find]params[:find].downcase )并小心在你的dev机器上设置PG。

 Category.where("LOWER(name) LIKE ?", "%#{params[:find].downcase}%").first 

在此期间,您可以在模型中提取查询:

category.rb

 def self.search_by_name(name) if Rails.env.development? where("LOWER(name) LIKE ?", "%#{name.downcase}%").take else where("LOWER(name) ILIKE ?", "%#{name}%").take end end 

调节器

 @tag = Category.search_by_name(params[:find])