Ruby on Rails: Class.where (...), но вернуть только 1 запись? - PullRequest
1 голос
/ 05 августа 2011

У меня есть таблица с именем users, и я делаю

array = User.where("username=?", username)

, чтобы получить пользователя для определенного имени пользователя.

Мой незначительный недостаток в том, что это возвращает массив, иЯ должен сделать array[0], но всегда должен быть только 1 возвращенный пользователь.

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

Ответы [ 3 ]

7 голосов
/ 05 августа 2011

Вы можете ограничить его одним результатом:

User.where("username = ?", username).first

Однако вы можете просто использовать динамический метод find_by_:

User.find_by_username(username)
1 голос
/ 05 августа 2011

Также вы можете использовать лимит в случае, если вы хотите получить больше результатов, но ограничение.

User.where("username = ?", username).order('created_at DESC').limit(5)
0 голосов
/ 05 августа 2011

Вот еще один синтаксис для поиска первой записи

 array = User.find(:first,:conditions => {:username => username})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...