Разве Rails-методы find_by_ не должны возвращать пустой массив вместо nil? - PullRequest
6 голосов
/ 14 сентября 2011

Разве Rails-методы find_by_ не должны возвращать пустой массив вместо nil?

Обычно нет записей, соответствующих условию find_by_, но возвращать ноль не имеет смысла. Потому что тогда, на мой взгляд, ошибки возникают из-за разумного кода вроде:

<% for thing in @thing_that_might_be_an_array_or_might_be_nil do %>

Поскольку find_by_ всегда возвращает массив, даже если есть только 1 запись, он также должен возвращать массив, если есть 0 записей. Тогда все эти

<% @thing.each

и

<% for thing in @thing

в наших взглядах будет тихо пропущено вместо того, чтобы вызывать «Извините, но что-то пошло не так». (или что мне не хватает? )

1 Ответ

6 голосов
/ 14 сентября 2011

find_by_ используется для поиска одной записи, первой, соответствующей вашим условиям.

find_all_by_ используется для поиска набора записей, массива, соответствующего вашим условиям.

Так что, да, я думаю, что find_by_ совершенно нормально возвращать ноль, а не пустой массив, когда он ничего не находит, потому что вы запрашиваете только одну вещь.

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