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を持つユーザーを返すことが保証されていますか?
IDでARの順番付けを行うのは、デフォルトではmysqlは新鮮さでレコードを注文します...または私は間違っていますか? – mpapis
私は、最初のデフォルト注文ではARは何もせず、DBに注文を残すと仮定することができます。この場合、MySQLの注文は「id ASC」に対応します。最後に、このアプローチはうまくいかないので、ARは "id DESC"を使用します。しかし、それはちょうど推測です。 – Thilo