我找到的最好的方法是搜索我特别不希望字符大小写的内容:
@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
助手吗?这将是一个很好的。
答案 0 :(得分:14)
我们可以将选项传递给Rails中的find_by助手吗?这将是一个很好的...
否没有。 (see the API)
是,这将是一个不错的选择。
你可能不接受这个答案,因为你的问题实际上不是问题 这可能是你被投票的原因。
也许你也可以小写params[:find]
(params[:find].downcase
),并在你的开发机器上设置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])
答案 1 :(得分:6)
是的,Rails通过the built-in Arel library or a gem such as Squeel支持不区分大小写的查询。