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 に答える