レガシ データベースの問題に対処する必要があり、Rails は常にモデルの最初の要素を id = 1 に設定し、0 ではないことに気付きました。
何故ですか?
class Car < ActiveRecord::Base
attr_accessible :name
end
レールcで
> c = Car.new(name: "Subaru")
> c.id
# id = 1
レガシ データベースの問題に対処する必要があり、Rails は常にモデルの最初の要素を id = 1 に設定し、0 ではないことに気付きました。
何故ですか?
class Car < ActiveRecord::Base
attr_accessible :name
end
レールcで
> c = Car.new(name: "Subaru")
> c.id
# id = 1
これは、数十年にわたるデータベースの慣例に従っているだけです。
主要な RDBMS は、主キーを 0 ではなく 1 から開始します。
これら - 配列要素のインデックスとレコードの ID - はまったく異なる概念です。
最初のものは、ポインター演算に関連しています。(通常) 配列の最初の要素を先頭に格納するため、これをアドレス指定するには、配列自体のアドレスに正確に 0 を追加する必要があります。) 次 (2 番目) の要素は要素ブロックの &array + 1 サイズに配置され、次 (3 番目) は &array + 2 サイズなどに配置されます。
レコードの auto_increment id はまさにそれです - レコードの id であり、前のものより (あるステップ値だけ) 高くなければなりません。繰り返しますが、人為的なルールよりも (「前のもの」が存在しない場合の前のもの = 0) の観点からこれを説明する方が簡単だと思います。0 + 1 はまさに - 1 です。