[英]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.