2

我发现搜索我特别不希望字符大小写重要的东西的最佳方法是:

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

我必须有.envfinder,因为我使用 Heroku,而且我不想在我的开发机器上安装 PostgreSQL。不过,是不是有类似的东西:

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

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

4

2 回答 2

14

我们可以将选项传递给 Rails 中的 find_by 助手吗?这将是一个不错的...

,没有。(请参阅 API
的,那将是一个不错的选择。

您可能不会接受此答案,因为您的问题并不是真正的问题,
这可能就是您被否决的原因。

也许您也可以将params[:find]( params[:find].downcase) 小写并注意在您的开发机器上设置 PG。

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

同时,您可以在模型中提取查询:

类别.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])
于 2013-10-10T20:57:09.243 回答
6

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

于 2013-12-06T00:14:27.393 回答