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])