diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2019-04-10 19:26:15 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2019-04-10 19:26:15 +0900 |
commit | bcb0fb792735e1be08ccffb153654cfc886e5ff4 (patch) | |
tree | ddd3b03baac97a33e2a8ad320d4b9aad1c5574af /activerecord/lib/active_record/core.rb | |
parent | 5f261d04d6f857d49c75124df809adfbd6cd5b5e (diff) | |
download | rails-bcb0fb792735e1be08ccffb153654cfc886e5ff4.tar.gz rails-bcb0fb792735e1be08ccffb153654cfc886e5ff4.tar.bz2 rails-bcb0fb792735e1be08ccffb153654cfc886e5ff4.zip |
Lazy sync with transaction state on destroy
This reverts commit 58410b3d566e6b93c7b71c0eec0fc11ec906b68e.
If we have any implicit commit/rollback callbacks, it is necessary to
add record to transaction explicitly like `:touch_deferred_attributes`.
https://github.com/rails/rails/blob/5f261d04d6f857d49c75124df809adfbd6cd5b5e/activerecord/lib/active_record/touch_later.rb#L9
https://github.com/rails/rails/blob/5f261d04d6f857d49c75124df809adfbd6cd5b5e/activerecord/lib/active_record/touch_later.rb#L25
But I can't find any other implicit commit/rollback callbacks in our
code base at least now.
I think the `self.class.connection.add_transaction_record(self)` line
doesn't cover any behavior.
Diffstat (limited to 'activerecord/lib/active_record/core.rb')
-rw-r--r-- | activerecord/lib/active_record/core.rb | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/core.rb b/activerecord/lib/active_record/core.rb index eb4b48bc37..6fed3e5c19 100644 --- a/activerecord/lib/active_record/core.rb +++ b/activerecord/lib/active_record/core.rb @@ -466,6 +466,7 @@ module ActiveRecord # Returns +true+ if the attributes hash has been frozen. def frozen? + sync_with_transaction_state @attributes.frozen? end @@ -583,7 +584,7 @@ module ActiveRecord end def thaw - if frozen? + if @attributes.frozen? @attributes = @attributes.dup end end |