我正在尝试搜索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