где против найти ().Какова рекомендация для их использования? - PullRequest
0 голосов
/ 14 января 2012

В каких ситуациях следует использовать Model.where или Model.find ()? Везде есть информация о различиях, но какова рекомендация по их использованию?

Ответы [ 2 ]

2 голосов
/ 14 января 2012

where на самом деле ничего не выбирает - он возвращает ActiveRecord::Relation, ограниченный только что указанными условиями. Это означает, что вы можете связать это с вещами: больше звонков на where, joins, limit и т. Д.

find с другой стороны может выполнить запрос и вернуть массив или объект (в зависимости от того, что вы делаете find :all или find :first, так что вы не можете связать вещи с обратной стороны.

Вы можете найти условия, присоединения и т. Д., Чтобы найти, но это станет устаревшим. На самом деле вам никогда не нужно вызывать find, поскольку вы либо позволяете ActiveRecord::Relation превращаться в массив, когда это необходимо, либо вызываете all / first / last для отношения, которое достигает того же самого то, что звонил бы find.

Об одном, что удобнее всего find, это когда у вас есть идентификатор (или массив идентификаторов) и вы хотите загрузить соответствующие объекты модели.

1 голос
/ 14 января 2012

Мы используем find каждый раз, когда для того, чтобы страница была полезной, должен быть виден только один результат. Например. /item/:id. Мы спасаем исключения NotFound и затем показываем страницу с ошибкой 404, если она обнаружена.

Если возможно, что пропущен элемент, мы используем where и first, если это имеет смысл.

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