Active Record的第一个方法是按ID排序吗?

时间:2010-11-20 22:13:22

标签: mysql ruby-on-rails

在调用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最低的用户?

2 个答案:

答案 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

因此,您的数据库如何订购数据。即你必须添加任何上述订单方法。