2017-03-25 50 views
0

我想知道我的變量是否與數據庫中的相應記錄不同。我知道'attribute'_changed? method,但它只有在通過變量更新記錄時纔有效。Rails檢查變量是否與記錄不一致

user = User.first # name = bar 
u.update(name: "foo") 
u.name_changed? # => true 

然而,在這種情況下(例如集成測試)

u = User.first # name = bar 
User.first.update(name: "foo") 
u.name # => 'bar' 
u.name_changed? #false 
u.reload 
u.name_changed #false 

我想檢查,如果我的可變ù從User.first的不同之處的一些屬性,該屬性並沒有因此而改變。

回答

1

沒有內置任何東西。您只需從數據庫加載另一個用戶並比較其屬性即可。

u = User.first # name = bar 
User.first.update(name: "foo") 
u.name # => 'bar' 
u2 = User.find(u.id) 
u.name == u2.name # => false