Rails: найти все с условиями - PullRequest
44 голосов
/ 11 марта 2012

в моем приложении у меня есть пользователи из разных стран, и я хочу выполнить поиск по ним

Я пытался сделать это так в действии index

 @fromcanada = User.find(:all, :country => 'canada')

но я получил ошибку

 Unknown key: country

Тем не менее, это заставляет меня спросить, что может стать ключом? В моем файле схемы базы данных у меня есть столбец "страна" в таблице пользователей.

t.string   "country"

Кроме того, когда я нашел все

@users = User.all

Я смог сделать это

<%= user.country %></p>

Не могли бы вы объяснить, почему мой поиск с условиями не работал? и покажи мне, как я должен был это сделать?

Ответы [ 2 ]

79 голосов
/ 11 марта 2012

Попробуйте это.

@fromcanada = User.find(:all, :conditions => { :country => 'canada' })

редактировать: Как указал jason328, вышеприведенный ответ устарел в 3.2, и обновленный ответ будет

@fromcanada = User.where(:country => 'canada')
32 голосов
/ 14 февраля 2013

В случае, если никто не читает комментарии.Лучшим форматом будет

@fromcanada = User.where(country: 'canada').all

Код предыдущего ответа устарел в 3.2.

А для тех, кто использует Rails 4, достаточно удалить метод all.

@fromcanada = User.where(country: 'canada').to_a

Обратите внимание, что to_a вызывает запрос в формате массива.

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