1

PostgresをdbとしてRailsプロジェクトで検索機能を作成しています。

これが私のコードです

def self.search(search)
   if search 
    find(:all, :conditions => ["LOWER(name) LIKE LOWER(?) OR LOWER(city) LIKE LOWER(?) OR LOWER(address) LIKE LOWER(?) OR (venue_type) LIKE (?)", "%#{search}%", "%#{search}%", "%#{search}%", "%#{search}%"])
    else
      find(:all)
    end
  end

しかし、私の問題は、「venue_type」が整数であることです。会場タイプのケース切り替えを行いました

def venue_type_check
    case self.venue_type
      when 1
        "Pub"
      when 2
        "Nattklubb"
    end
end

さて、私の質問に:venue_type が int の場合、クエリで何かを見つけるにはどうすればよいですか?

4

3 に答える 3

0

Rails 3.2 以降を使用している場合は、where( [] )代わりに forを使用する必要がありますfind

where( [ "field like ?", field ] ).order(). ...

また、pgsql を使用する場合、 withilikeの代わりに使用しないのはなぜですか?likelower

あなたの場合、int か int でないかを検索しているときに、別のクエリを使用します。

いつsearch.to_i != 0

于 2013-07-01T10:36:12.267 に答える