我有一个搜索栏,在开发环境中的localhost上运行时执行不区分大小写的搜索,但是当我推送到Heroku并在生产环境中运行时,搜索区分大小写。不确定会导致这种行为的原因。
来自app \ views \ layouts \ application.html.erb:
<form class="navbar-search pull-right">
<input type="text" class="search-query span3" placeholder="Find Some Beers" name="search">
</form>
来自app \ controllers \ ratings_controller.rb:
def search
fff = Rating.search(params[:search])
@ratings_by_name = fff.paginate(:order => 'name ASC', :page => params[:page], :per_page =>10)
@ratings_by_score = fff.paginate(:order => 'score DESC', :page => params[:page], :per_page =>10)
end
来自app \ models \ rating.rb:
def self.search(query)
words = query.to_s.strip.split
words.inject(scoped) do |combined_scope, word|
combined_scope.where("name LIKE ?", "%#{word}%")
end
end
谢谢!
答案 0 :(得分:0)
Heroku使用postgres,确保你也在开发中使用postgres。
使用ILIKE postgres不区分大小写的LIKE
combined_scope.where("name ILIKE ?", "%#{word}%")
http://www.postgresql.org/docs/9.1/static/functions-matching.html
可以使用关键字ILIKE而不是LIKE来根据活动区域设置使匹配不区分大小写。这不是SQL标准,而是PostgreSQL扩展。