Ruby on rails activerecord模型的默认排序顺序?
如果我没有在模型(Account)中设置默认的_作用域,只需调用Account.first,将返回哪个项 以下是一个示例: Account表有5条记录,Account.all返回:Ruby on rails activerecord模型的默认排序顺序?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,如果我没有在模型(Account)中设置默认的_作用域,只需调用Account.first,将返回哪个项 以下是一个示例: Account表有5条记录,Account.all返回: Account.all.map{ |x| {id: x.id, name: x.name, created_at: x.created_at, updated_at:x.updated_at}} Account Load (0.5ms) SELECT "accounts".* FROM "accounts"
Account.all.map{ |x| {id: x.id, name: x.name, created_at: x.created_at, updated_at:x.updated_at}}
Account Load (0.5ms) SELECT "accounts".* FROM "accounts"
=> [{:id=>2,
:name=>"Hessel, Kirlin and Gulgowski",
:created_at=>Wed, 04 Sep 2013 00:44:33 EDT -04:00,
:updated_at=>Wed, 04 Sep 2013 00:44:33 EDT -04:00},
{:id=>3,
:name=>"Hessel, Kirlin and Gulgowski",
:created_at=>Wed, 04 Sep 2013 00:44:34 EDT -04:00,
:updated_at=>Wed, 04 Sep 2013 00:44:34 EDT -04:00},
{:id=>4,
:name=>"Hessel, Kirlin and Gulgowski",
:created_at=>Wed, 04 Sep 2013 00:44:34 EDT -04:00,
:updated_at=>Wed, 04 Sep 2013 00:44:34 EDT -04:00},
{:id=>5,
:name=>"Hessel, Kirlin and Gulgowski",
:created_at=>Wed, 04 Sep 2013 00:44:35 EDT -04:00,
:updated_at=>Wed, 04 Sep 2013 00:44:35 EDT -04:00},
{:id=>1,
:name=>"EIS",
:created_at=>Wed, 04 Sep 2013 00:44:31 EDT -04:00,
:updated_at=>Wed, 04 Sep 2013 00:44:32 EDT -04:00}]
Account.first返回id为2的记录,我没有在模型中设置默认的_范围,为什么id为2的id不是id为1的id
谢谢
更新:我喜欢这个答案()我的理解是,在没有订单的情况下,将使用默认的order by id,但至少在3.2.13中不是这样
2.0.0p247 :001 > Book.first
Book Load (60.0ms) SELECT "books".* FROM "books" LIMIT 1
因此,在最近的版本中可能有代码更改。您使用的是什么版本?Account.first方法生成什么查询?我使用rails 3.2.13进行此检查,然后检查查询:它看起来不符合顺序。如果排序对您来说至关重要,那么无论如何我都会明确指定。