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.

Другие вопросы по тегам