我有两个应该相同的用户对象,但 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% 的时间里,答案是错误的,从而导致了问题。
谁能告诉我发生了什么事?非常感谢。
➜ ~ ruby --version
ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
➜ ~ rails --version
Rails 3.0.10