cau*_*eld 2 activerecord ruby-on-rails ruby-on-rails-3
有人可以解释一下AR对象的这种行为:
u = User.first
uu = u.dup
uu == u #=> true
u == uu #=> false
Run Code Online (Sandbox Code Playgroud)
为什么后者不正确?
这是因为如果第二个对象是新记录则ActiveRecord::Base#==返回false.既然uu.new_record?是true,当u == uu它做回来false; 但u.new_record?是false,所以uu == u不会失败,办理入住手续.
自Rails 3.0以来,这种行为已经发生了变化,u == uu并且uu == u将false在Rails 3.2(可能还有3.1)中返回.
| 归档时间: |
|
| 查看次数: |
209 次 |
| 最近记录: |