在Rails中使用多个列进行搜索

时间:2011-12-08 02:27:07

标签: ruby-on-rails

使用命令时:

@items = Item.find(:all,:order => 'name', :conditions => ["name LIKE ?", "%#{params[:key]}%"])

这完全正常,但搜索仅基于一列。如何让它搜索其他列,如描述,类别?

2 个答案:

答案 0 :(得分:5)

我假设您使用的是Rails 2,因为您使用的是ActiveRecord 2样式语法。您可以添加其他列作为附加条件,如下所示:

key = "%#{params[:key]}%"
@items = Item.find(:all, :conditions => [
  'name LIKE ? OR description LIKE ? OR category LIKE ?',
   key, key, key
], :order => 'name')

供参考,以下是如何在Rails 3中执行此操作:

key = "%#{params[:key]}%"
@items = Item.where('name LIKE ? OR description LIKE ? OR category LIKE ?', key, key, key).order(:name)

答案 1 :(得分:1)

如果您有15列要搜索,那么您将重复键15次。而不是在查询中重复键15次,你可以像这样写:

key = "%#{params[:key]}%"
@items = Item.where('name LIKE :search OR description LIKE :search OR category LIKE :search', search: key).order(:name)

它会给你相同的结果。

由于