如果我执行以下操作:
user = User.new
user.extend Customer
user.is_a? Customer == true
它工作正常。
但是,如果我执行以下操作(其中Profile是mongoid模型并且用户已嵌入):
profile = Profile.all.first
profile.user.extend Customer
profile.user.is_a? Customer == false
用户不再是客户。必须有一个简单的原因,但我看不到它。
编辑:用户和个人资料是mongoid模型,即。 profile.user.class = User和profile.class = Profile。
答案 0 :(得分:0)
我猜:每次打电话给profile.user
,你都会得到一个新物体。尝试:
2.times{ p profiler.user.object_id }
看看会发生什么。然后尝试:
u = profile.user
u.extend Customer
p u.is_a? Customer
p profile.user.is_a? Customer
看看你得到了什么输出。
答案 1 :(得分:0)
这实际上最终成为Mongoid中的一个错误。这是描述的问题: https://github.com/mongoid/mongoid/issues/1933
现在已在最近的提交中修复。