2010-08-18 44 views
3

爲什麼mongoid在關聯中調用new時插入id,但在調用構建關聯時插入id?mongoid新版本與構建

這是一個錯誤,或者這是它如何在mongoid中工作?

回答

2

這與您與其他ORM獲得的行爲相同,例如, SQLite ...#新不會創建一個ID,因爲新對象還沒有被保存/保存!

無論何時發生保存,下一個可用的ID用於新保存的對象......這意味着如果您有幾個新對象,您不能爲它們分配ID直到它們被保存,因爲ID取決於他們被保存的順序..

MongoDB ID不增加作爲SQL DB中的ID,但它們包含時間戳作爲鍵的一部分..因此再次依賴於保存/保持對象的順序

此外:ID僅作爲對保存對象的引用有意義 - 您可以使用#new創建對象並最終不保存它們 - 將ID分配給未保存的對象是沒有意義的。