Поиск с несколькими столбцами в Rails - PullRequest
2 голосов
/ 08 декабря 2011

При использовании команды:

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

Это прекрасно работает, но поиск основан только на столбце. Как мне сделать поиск в других столбцах, таких как описание, категория?

Ответы [ 2 ]

5 голосов
/ 08 декабря 2011

Я предполагаю, что вы используете 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 голос
/ 17 ноября 2014

Что если у вас есть 15 столбцов для поиска, то вы будете повторять клавишу 15 раз.Вместо повторения ключа 15 раз в запросе вы можете написать так:

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

Это даст вам тот же результат.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...