Изменить простой поиск в рельсах для поиска связанных данных? - PullRequest
1 голос
/ 13 января 2011

Я следовал: http://railscasts.com/episodes/37-simple-search-form (хотя и обновленная версия), чтобы реализовать поиск в моем приложении.

Прямо сейчас, когда вы ищете, он ищет 1 таблицу. Что если эта таблица связана с другой таблицей или таблицей соединений? Есть ли способ заставить его искать эти поля, а также.

Я говорю это, потому что в настоящее время у меня есть поиск по полям из одной таблицы:

def self.search(search)
    if search
      where('LOWER (description) LIKE ? OR LOWER (title) LIKE ?', "%#{search}%" , "%#{search}%")
    else
      scoped
    end
  end

но мне бы очень хотелось поискать и в связанной таблице. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 13 января 2011

Да, вы можете добавлять объединения в поиск

# models/project.rb
def self.search(search)
  if search
    find(:all, :joins => :other_model, :conditions => ['projects.name LIKE :search or other_models.name LIKE :search', {:search => "%#{search}%"}])
  else
    find(:all)
  end
end

ОК, это будет лучшим примером для будущего

  def self.search(search)
      if search
        joins(:other_model).where('LOWER (projects.description) LIKE ? or LOWER (other_models.name) LIKE ?', "%#{search}%", "%#{search}%")
      else
        scoped
      end
    end
0 голосов
/ 14 января 2011

Вы можете взглянуть на searchlogic (у него есть ветвь rails 3 на github), он значительно облегчает поиск!

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