なぜモンゴイドは、アソシエーションでnewを呼び出すときにidを挿入せず、アソシエーションでbuildを呼び出すときにidを挿入するのですか?
これはバグですか、それともmongoidでどのように機能するのですか?
なぜモンゴイドは、アソシエーションでnewを呼び出すときにidを挿入せず、アソシエーションでbuildを呼び出すときにidを挿入するのですか?
これはバグですか、それともmongoidでどのように機能するのですか?
これは、他のORMで得られる動作と同じです。たとえばSQLite ... #newは、新しいオブジェクトがまだ保存/永続化されていないため、IDを作成しません。
保存が行われるたびに、次に使用可能なIDが新しく保存されたオブジェクトに使用されます...つまり、新しいオブジェクトが2つある場合、IDはそれらの順序に依存するため、保存されるまでIDを割り当てることができませんでした。に保存されます。
MongoDB IDは、SQL DBではIDとしてインクリメントされませんが、キーの一部としてタイムスタンプが含まれています。したがって、オブジェクトの保存/永続化の順序に依存します。
また、IDは、保存されたオブジェクトへの参照としてのみ意味があります。#newを使用してオブジェクトを作成し、保存しないことになります。保存されていないオブジェクトにIDを割り当てることは意味がありません。