0

如果我执行以下操作:

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 = 用户和 profile.class = 个人资料。

4

2 回答 2

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

看看你得到什么输出。

于 2012-04-19T16:17:30.403 回答
0

这实际上最终成为 Mongoid 中的一个错误。这是描述的问题: https ://github.com/mongoid/mongoid/issues/1933

它现在已在最新提交中修复。

于 2012-04-20T14:41:04.393 回答