where
на самом деле ничего не выбирает - он возвращает ActiveRecord::Relation
, ограниченный только что указанными условиями. Это означает, что вы можете связать это с вещами: больше звонков на where
, joins
, limit
и т. Д.
find
с другой стороны может выполнить запрос и вернуть массив или объект (в зависимости от того, что вы делаете find :all
или find :first
, так что вы не можете связать вещи с обратной стороны.
Вы можете найти условия, присоединения и т. Д., Чтобы найти, но это станет устаревшим. На самом деле вам никогда не нужно вызывать find
, поскольку вы либо позволяете ActiveRecord::Relation
превращаться в массив, когда это необходимо, либо вызываете all
/ first
/ last
для отношения, которое достигает того же самого то, что звонил бы find
.
Об одном, что удобнее всего find
, это когда у вас есть идентификатор (или массив идентификаторов) и вы хотите загрузить соответствующие объекты модели.