0

モデル内のすべての列を検索しようとしていますTicket。ほとんどの列は関連付けにbelongs_to関連付けられているため、ID がわからないため、列内の情報の属性を検索する必要があります。

これらの記事が役に立ちました: Rails 3.0 で複数の db 列を検索する

Rails: has_one 関連付けで検索

これまでのところ、以下のコードがありますが、最上位のパラメーターのみを検索します。一番上の検索で何も見つからない場合、次の検索を試みるようにするにはどうすればよいですか。これにさらに追加します。

ありがとう

def self.search(search)
  if search
    Ticket.joins(:submitter).where('first_name LIKE ?', "%#{search}%")
  elsif  
    Ticket.joins(:issue).where('name LIKE ?', "%#{search}%")
  else
    all
  end
end

私はそれを理解し、ここで正しいコードを更新しました:

def self.search(search)
case search 
when /^[-+]?[0-9]*\.?[0-9]+$/
  Ticket.find(:all, :conditions => ['id LIKE :search', {:search => "%#{search}%"}])
else
  Ticket.joins(:submitter,:issue).find(:all, :conditions => ['name LIKE :search OR first_name LIKE :search', {:search => "%#{search}%"}])
end
end
4

1 に答える 1