1

如果我没有在模型(帐户)中设置 default_scope,而只是调用 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"
=> [{: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 的记录,我没有在模型中设置 default_scope,为什么 id 为 2 而不是 id 为 1?

谢谢 !

更新:我喜欢这个答案(https://stackoverflow.com/a/4986620/655621

4

1 回答 1

0

我的理解是,在没有订单的情况下,将使用 id 的默认订单,但至少在 3.2.13 中似乎并非如此

2.0.0p247 :001 > Book.first
  Book Load (60.0ms)  SELECT "books".* FROM "books" LIMIT 1

因此,最近的版本中可能发生了代码更改。你用的是什么版本?

于 2013-09-04T08:58:51.500 回答