我有两个Mongoid模型定义为
post.wp:featuredmedia.media_deatils.sizes.large.source_url
如果我创建一个具有class Owner
include Mongoid::Document
include Mongoid::Timestamps
embeds_many :pets, class_name: 'Pet', inverse_of: :owner
field :special_unit, type: String
end
class Pet
include Mongoid::Document
include Mongoid::Timestamps
embedded_in :owner, inverse_of: :pets
field :special_unit, default: lambda {
if owner
owner.special_unit
else
'default_value'
end
}
end
字段的持久性Owner
。
special_unit
主人宠物具有owner = Owner.create(special_unit: 'foo')
owner.pets.create
owner.pets.first.special_unit
=> 'default_value'
作为值特殊单位。这是因为default_value
在默认调用该字段的lambda中返回了pet
。如果我在lambda内调用nil
,则也会返回_parent
。有人知道为什么吗?
对于其他情况,我可以在nil
的实例上调用#owner
和#_parent
并返回期望的所有者。在字段默认分配期间,将返回nil。
我正在使用Mongoid 6.4