2013-06-01 1 views
1

Я думаю, что это простой вопрос:Rails - Как использовать Squeel для поиска с помощью связанного атрибута

У меня есть модель здания и каждое здание has_one город и каждый город BELONGS_TO зданий. Я хотел бы выполнить поиск по имени города (не id), используя Squeel.

В настоящее время у меня есть:

where{(zip =~ "%#{search}%") | (Building.all.map(&:city) =~ "%#{search}%")} 

Зорких через почтовые индексы хорошо работает, так что является прямым признаком для модели здания. Это вторая статья, с которой я борюсь.

Прямо сейчас, я получаю эту ошибку:

Cannot visit NilClass 

Как я могу сделать эту работу?

ответ

1

Вам просто нужно присоединиться к таблице города, чтобы фильтровать поле города.

where{(zip =~ "%#{search}%") | (city.name =~ "%#{search}%")}.joins{city.outer} 

Если все здания имеют один город вы можете удалить внешнее соединение.

+0

Только что попробовал это и получил: PGError: ERROR: column buildings.city не существует - я сделал: «.joins {city}» без «.outer», так как у каждого здания есть один город – Zephyr4434

+0

Я просто изменил запрос , Теперь лучше? – basgys

+0

Yup, это исправлено! – Zephyr4434

 Смежные вопросы

  • Нет связанных вопросов^_^