Почему ActiveRecord имеет эту особенность? - PullRequest
2 голосов
/ 20 апреля 2011

Следующий запрос вызывает исключение:

User.find(4)

В то время как следующий запрос возвращает nil:

User.find(:first, :conditions => "id = 4")

Обертки базы данных обычно возвращают 'nil' или 'null' и т. Д., Когда запись не найдена, или они вызывают исключения? Есть ли что-то особенное в добавлении ключевого слова first? Это ожидаемое поведение или рельсы магии шипят?

1 Ответ

3 голосов
/ 20 апреля 2011

Думайте об этом так:

В первом примере вы говорите Active Record найти запись в таблице пользователей с идентификатором 4, и она должна существовать.

Во втором примере вы пройдете долгий путь и скажете: «Пожалуйста, найдите записи с атрибутом id, равным 4, и, если есть, верните первый».Вот почему он ничего не возвращает.

Более короткий способ сделать это - использовать find_by_id.

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