0

私が次のことをした場合:

user = User.new
user.extend Customer
user.is_a? Customer == true

それはうまくいきます。

ただし、次のことを行うと(プロファイルはモンゴイドモデルであり、ユーザーは埋め込まれています):

profile = Profile.all.first
profile.user.extend Customer
profile.user.is_a? Customer == false

ユーザーはもはや顧客ではありません。これには単純な理由があるはずですが、私にはわかりません。

編集:ユーザーとプロファイルはモンゴイドモデルです。profile.user.class=ユーザーおよびprofile.class=プロファイル。

4

2 に答える 2

0

これは実際には Mongoid のバグでした。説明付きの問題は次のとおりです。 https://github.com/mongoid/mongoid/issues/1933

現在、最新のコミットで修正されています。

于 2012-04-20T14:41:04.393 に答える
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 に答える