3

なぜモンゴイドは、アソシエーションでnewを呼び出すときにidを挿入せず、アソシエーションでbuildを呼び出すときにidを挿入するのですか?

これはバグですか、それともmongoidでどのように機能するのですか?

4

1 に答える 1

2

これは、他のORMで得られる動作と同じです。たとえばSQLite ... #newは、新しいオブジェクトがまだ保存/永続化されていないため、IDを作成しません。

保存が行われるたびに、次に使用可能なIDが新しく保存されたオブジェクトに使用されます...つまり、新しいオブジェクトが2つある場合、IDはそれらの順序に依存するため、保存されるまでIDを割り当てることができませんでした。に保存されます。

MongoDB IDは、SQL DBではIDとしてインクリメントされませんが、キーの一部としてタイムスタンプが含まれています。したがって、オブジェクトの保存/永続化の順序に依存します。

また、IDは、保存されたオブジェクトへの参照としてのみ意味があります。#newを使用してオブジェクトを作成し、保存しないことになります。保存されていないオブジェクトにIDを割り当てることは意味がありません。

于 2011-04-29T23:41:53.273 に答える