User.last
을 호출 할 때 활성 레코드 정렬이 id
인 것처럼 보입니다.액티브 레코드의 첫 번째 방법은 ID별로 정렬합니까?
User Load (1.4ms) SELECT * FROM
사용자
ORDER BY users.id DESC LIMIT 1
그러나 User.first
를 호출 할 때이 주문 절을 사용하지 않습니다.
User Load (1.9ms) SELECT * FROM
사용자
LIMIT 1
그래서이 가장 낮은 ID를 가진 사용자를 반환 보장? 실용적으로 보이지만 MySQL이이를 보장하는지 잘 모르겠습니다.
또는 다음을 수행해야합니까 : User.first(:order => 'id')
: 주문 절을 강제 적용합니다.
편집 : 이것은 정말로 MySQL 문제입니다. SELECT * FROM
사용자가 LIMIT 1
인 경우 ID가 가장 낮은 사용자를 돌려 주겠습니까?
하지만 AR에 의한 ID 순서 지정은 기본적으로 mysql이 최신 상태로 레코드를 주문합니다 ... 아니면 내가 틀렸습니까? – mpapis
나는 처음에 디폴트 순서로, AR은 아무것도하지 않고 DB에 순서를 맡긴다 고 추측 할 수있다.이 경우에는 "order ASC"에 대응하는 삽입 순서에 의한 MySQL 주문이 될 것이다. 마지막으로이 접근법은 작동하지 않으므로 AR은 "id DESC"를 사용합니다. 그러나 그것은 단지 추측입니다. – Thilo