在调用User.last
时,它似乎是按id
排序的Active Record。
User Load (1.4ms) SELECT * FROM
{用户{1}}
但是在调用ORDER BY users.id DESC LIMIT 1
时,它不使用订单子句。
User.first
{用户{1}}
这样可以保证返回ID最低的用户吗?它似乎在实践中,但我不确定MySQL是否保证这一点。
或者你必须这样做:User Load (1.9ms) SELECT * FROM
强制订购条款。
编辑:我想这确实是一个MySQL问题。 LIMIT 1
用户User.first(:order => 'id')
是否保证返回ID最低的用户?
答案 0 :(得分:1)
默认情况下不确定ActiveRecord的作用,但您可以使用ActiveRecord的default_scope方法强制模型中的默认顺序:
default_scope :order => "id ASC"
或在Rails 3中
default_scope order("id ASC")
答案 1 :(得分:0)
它将返回与
相同的结果select * from users limit 1
因此,您的数据库如何订购数据。即你必须添加任何上述订单方法。