有人可以解释一下 AR 对象的这种行为吗:
u = User.first
uu = u.dup
uu == u #=> true
u == uu #=> false
为什么后者不正确?
最佳答案
这是因为ActiveRecord::Base#==
如果第二个对象是新记录,则返回 false
。由于uu.new_record?
是true
,当执行u == uu
时它返回false
;但 u.new_record?
为 false
,因此 uu == u
不会使该检查失败。
自 Rails 3.0 以来,此行为已发生变化,在 Rails 3.2 中,u == uu
和 uu == u
都将返回 false
(并且可能是 3.1)。
关于ruby-on-rails - ActiveRecord 对象的 Ruby dup 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10343073/