據ActiveRecord::Base文檔:ActiveRecord的對象的相等
==(comparison_object)如果comparison_object是完全相同的 對象,或comparison_object是 相同類型的和自具有ID,它是,則返回true 等於comparison_object.id。
請注意,除了其他記錄是 接收器本身,新記錄不同於 定義的其他記錄, 。此外,如果您使用select取 現有記錄並將 ID取出,則您自行處理,此謂詞將返回false。
還要注意的是,銷燬記錄 保留其ID在模型 實例,所以刪除車型仍然 可比性。
但我的觀察表明,它只是使下列情況,比較instaces,不IDS:
a = Factory.create(:user)
b = User.find_by_email(a.email) # b is logically same as a
a.id.should == b.id # All good
a.should == b # FAILS: Contradicts the docs
a.should_not == b # Contradicts the docs
a.should_not eql b # Contradicts the docs
的問題是2個AR實例被認爲是不同的,而文檔明確地說,那些應等於?
更新:等於是否按預期工作。 以上代碼示例無關。請參閱下面的答案。
注:以上文檔的鏈接的當前版本是在http://api.rubyonrails.org/classes/ActiveRecord/Core.html#method -i-3D-3D – DreadPirateShawn