У меня есть два объекта 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% случаев, когда я отображаю страницу, вызывая проблему.
Может кто-нибудь сказать мне, что происходит?Большое спасибо.
➜ ~ ruby --version
ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
➜ ~ rails --version
Рельсы 3.0.10