mongoid new vs. build

时间:2010-08-18 03:07:27

标签: build new-operator mongoid

为什么mongoid在关联时调用new时不会插入id,但在关联上调用build时会插入id?

这是一个错误还是这个在mongoid中是如何工作的?

1 个答案:

答案 0 :(得分:2)

这与您使用其他ORM获得的行为相同,例如SQLite ... #new不会创建ID,因为新对象尚未保存/持久化!

每当保存发生时,下一个可用的ID用于新保存的对象...这意味着如果您有几个新对象,则在保存之前无法为其分配ID,因为ID取决于他们保存的顺序..

MongoDB ID不会在SQL DB中作为ID递增,但它们包含时间戳作为键的一部分..因此再次依赖于保存/持久化对象的顺序

另外:ID仅作为对已保存对象的引用有意义 - 您可以使用#new创建对象并最终不保存它们 - 将ID分配给未保存的对象是没有意义的。 / p>