Первый метод Active Record сортирует по идентификатору? - PullRequest
0 голосов
/ 21 ноября 2010

При вызове User.last похоже, что Active Record сортирует по id.

User Load (1.4ms) SELECT * FROM Пользователи ORDER BY users.id DESC LIMIT 1

Но при вызове User.first он не использует предложение порядка.

User Load (1.9ms) SELECT * FROM Пользователи LIMIT 1

Так это гарантированно вернуть пользователя с самым низким идентификатором? Кажется, на практике, но я не уверен, что MySQL гарантирует это.

Или вы должны сделать это: User.first(:order => 'id'), что заставляет предложение порядка.

Редактировать: Я думаю, это действительно вопрос MySQL. SELECT * FROM users LIMIT 1 гарантированно вернет пользователя с самым низким идентификатором?

Ответы [ 2 ]

1 голос
/ 21 ноября 2010

Не уверен, что ActiveRecord делает по умолчанию, но вы можете принудительно установить порядок по умолчанию в своей модели, используя метод ActiveRecord default_scope :

default_scope :order => "id ASC"

или в Rails 3

default_scope order("id ASC")
0 голосов
/ 21 ноября 2010

Будет возвращен тот же результат, что и

select * from users limit 1

так что ваша база данных, как заказать данные. то есть вы должны добавить любой из вышеупомянутых методов заказа.

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