[英]Odd behaviour when extending an object with a module in ruby
如果我执行以下操作:
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 =配置文件。
我的猜测:每次调用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
看看你得到什么输出。
这实际上最终是Mongoid中的错误。 这是描述问题: https : //github.com/mongoid/mongoid/issues/1933
现在已在最新提交中修复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.