0

最近アプリケーションを heroku にアップロードしましたが、postgresql が原因で大文字と小文字が区別されません。これをどのように修正すればよいでしょうか? 私のコードは次のとおりです。

relation = Game.gamsearch(params[:gamsearch])
relation = Game.consearch(params[:consearch]) if params[:consearch].present? 
relation = Game.gensearch(params[:gensearch]) if params[:gensearch].present? 
relation = Game.where("game_name LIKE ?", "#{params[:game_name]}%") if params[:game_name].present? 
relation = Game.where("console = ?", params[:console]) if params[:console].present?

ビューコード:

<%= form_tag games_path, :controller => 'games', :action => 'gamsearch', :method => 'get' do %>
                        <%= text_field_tag :gamsearch, params[:gamsearch] %>
                        <%= submit_tag t('.searchb'), :game_name => nil %>
                        <% end %>

これはモデルコードです:

def self.gensearch(*args)
#search for games by their genre
return [] if args.blank?
cond_text, cond_values = [], []
args.each do |str|
  next if str.blank?
  cond_text << "( %s )" % str.split.map{|w| "genre LIKE ? "}.join(" OR ")
  cond_values.concat(str.split.map{|w| "%#{w}%"})
end
all :conditions =>  [cond_text.join(" AND "), *cond_values]

終わり

4

2 に答える 2

3
relation = Game.where("game_name ILIKE ?", "#{params[:game_name]}%") if params[:game_name].present? 

LIKE ではなく ILIKE に注意してください

于 2012-04-24T13:55:06.870 に答える
2

ILIKE は PG の方法ですが、開発中の別のデータベース (sqlite) がある場合、それは機能しない可能性があります。これを回避する 1 つの方法は、両方の値を大文字にしてから、両方の大文字バージョンを比較することです。

于 2012-04-24T14:12:37.023 に答える