簡體   English   中英

在Ruby中使用模塊擴展對象時的奇怪行為

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM