Rails - гарантированно.first будет первым созданным или только первым полученным?
Давайте предположим, у меня есть много User
записи - если я позвоню User.first
это гарантированно будет первым пользователем, который существовал в базе данных, или я должен сортировать по created_at
чтобы убедиться, что заказ по created_at
? Обратите внимание, что я использую mongoid, а не ActiveRecord.
2 ответа
User.first
возвращает первого пользователя, упорядоченного по первичному ключу (см. раздел 1.1.3 Руководства по запросам Active Record).
В большинстве случаев это будет первый созданный предмет, но это не гарантировано. Зависит от того, как БД была заполнена. Так что вы должны использовать:
Client.order('created_at').first
First возвращает первый объект в запросе. В вашем примере зовет User.first
возвращает первую запись в User.all
набор данных. Хотя по умолчанию это будет первая запись в порядке первичного ключа, если вы поместили в запрос какие-либо условия заказа (включая область действия по умолчанию для модели), он вернет первый объект в соответствии с заданным порядком.
Например User.all.order("last_name").first
вернет запись с первой в алфавитном порядке фамилией. Или же User.all.order("updated_at DESC").first
вернет самого последнего обновленного пользователя.
Если вы не задали какие-либо области заказа в своем запросе, порядок будет по умолчанию соответствовать порядку, в котором были созданы записи, и никакое другое упорядочение не потребуется. Для получения дополнительной информации о том, как эти функции, проверьте эту направляющую запись в интерфейсе Active Record Query.