モデル内のすべての列を検索しようとしていますTicket
。ほとんどの列は関連付けにbelongs_to
関連付けられているため、ID がわからないため、列内の情報の属性を検索する必要があります。
これらの記事が役に立ちました: Rails 3.0 で複数の db 列を検索する
これまでのところ、以下のコードがありますが、最上位のパラメーターのみを検索します。一番上の検索で何も見つからない場合、次の検索を試みるようにするにはどうすればよいですか。これにさらに追加します。
ありがとう
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