1

レガシ データベースの問題に対処する必要があり、Rails は常にモデルの最初の要素を id = 1 に設定し、0 ではないことに気付きました。

何故ですか?

class Car < ActiveRecord::Base
    attr_accessible :name
end

レールcで

> c = Car.new(name: "Subaru")
> c.id
# id = 1
4

2 に答える 2

2

これは、数十年にわたるデータベースの慣例に従っているだけです。

主要な RDBMS は、主キーを 0 ではなく 1 から開始します。

于 2012-10-18T22:22:11.953 に答える
0

これら - 配列要素のインデックスとレコードの ID - はまったく異なる概念です。

最初のものは、ポインター演算に関連しています。(通常) 配列の最初の要素を先頭に格納するため、これをアドレス指定するには、配列自体のアドレスに正確に 0 を追加する必要があります。) 次 (2 番目) の要素は要素ブロックの &array + 1 サイズに配置され、次 (3 番目) は &array + 2 サイズなどに配置されます。

レコードの auto_increment id はまさにそれです - レコードの id であり、前のものより (あるステップ値だけ) 高くなければなりません。繰り返しますが、人為的なルールよりも (「前のもの」が存在しない場合の前のもの = 0) の観点からこれを説明する方が簡単だと思います。0 + 1 はまさに - 1 です。

于 2012-10-18T22:22:27.187 に答える