2015-10-06 28 views
0

有沒有辦法從一開始直到事務結束時應用ActiveRecord上的更改?我嘗試了previous_changes,但它只是返回應用於ActiveRecord上最後一個操作的更改。例如:從after_commit掛鉤事務處理開始的訪問更改

Account.transaction do 
    account = Account.create(name: 'test') 
    account.update(last_name: 'testing') 
end 

我想知道'name'和'last_name'在事務中發生了變化。

回答

0

您可以檢查ActiveModel::Dirty,只是:

Account.transaction do 
    account = Account.create(name: 'test') 
    account.set_attributes(last_name: 'testing') 
    account.previous_changes[:last_name].present? 
    account.save! 
end 
+0

它只是返回的帳戶最近更改。在我的例子中,它只會告訴我'last_name'已更改 –

+0

嘗試更新的答案 – asiniy

+0

previous_changes用於after_commit掛鉤,因此您的示例不幸在我的情況下不起作用 –