當調用User.last
它看起來像活動記錄排序id
。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
因此,這是保證返回具有最低ID的用戶?這似乎在實踐中,但我不確定MySQL是否能保證這一點。
或者您是否必須這樣做:User.first(:order => 'id')
這會強制執行訂單條款。
編輯:我想這真的是MySQL的問題。是SELECT * FROM
用戶LIMIT 1
保證返回用戶最低的ID?
但通過ID確實AR強制排序,默認情況下mysql通過新鮮命令記錄...或者我錯了嗎? – mpapis 2010-11-21 00:44:01
我只能假設,對於第一個默認訂單,AR不做任何事情,並將訂單留給數據庫,這將在MySQL訂單中通過插入訂單進行,這恰好對應於「id ASC」。最後,這種方法不起作用,所以AR使用「id DESC」。但這只是一個猜測。 – Thilo 2010-11-21 11:01:21