同じであるべき 2 つの User オブジェクトがありますが、Ruby はそうではないと言っています。ここで何が起こっているのか誰か説明してもらえますか?
a = current_user
b = votable.user
a == b
false
a.id == b.id
true
a.name == b.name
true
a.attributes == b.attributes
true
元の投稿以降の更新/追加情報:
- 私が抱えている問題は断続的であることがわかりました。問題のページを更新する時間の約 30% で発生します。70% の確率で A == B となり、すべてが期待どおりに機能します。しかし、30% の確率で、A は B と等しくありません。
- 問題が発生すると、Ruby は、オブジェクト (ユーザーとユーザー) が同じに見えても、オブジェクトのクラス (型) が同じではないことを実際に教えてくれます。問題が発生している 30% の時間の出力は次のとおりです。
.
a.class == b.class AKA a.type == b.type
false (note: this is a correction to the original post which said true)
a.class.to_s
"User"
b.class.to_s
"User"
a.class.name == b.class.name
true
a.class.methods == b.class.methods
true
a.class.object_id == b.class.object_id
false
したがって、オブジェクトのクラス (型) はまったく同じに見えます。ユーザーと言われています。しかし、a.class == b.class を評価すると、ページをレンダリングする時間の 30% で答えが false になり、問題が発生します。
誰が何が起こっているのか教えてもらえますか? どうもありがとう。
➜ ~ ruby --version
ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
➜ ~ rails --version
Rails 3.0.10