diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2018-03-04 00:39:53 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2018-03-05 09:52:58 +0900 |
commit | ea45d56d3d23e703b2866524202649e333fd7408 (patch) | |
tree | 5916e79901652db4f51e2174dbdf6d1c878d79c0 /activerecord/lib/active_record/locking | |
parent | 37984353f272efb12cb1d008cb231a1f1e56524a (diff) | |
download | rails-ea45d56d3d23e703b2866524202649e333fd7408.tar.gz rails-ea45d56d3d23e703b2866524202649e333fd7408.tar.bz2 rails-ea45d56d3d23e703b2866524202649e333fd7408.zip |
Introduce `_delete_record` and use it for deleting a record
Diffstat (limited to 'activerecord/lib/active_record/locking')
-rw-r--r-- | activerecord/lib/active_record/locking/optimistic.rb | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/activerecord/lib/active_record/locking/optimistic.rb b/activerecord/lib/active_record/locking/optimistic.rb index c2f740a1e0..29735f5490 100644 --- a/activerecord/lib/active_record/locking/optimistic.rb +++ b/activerecord/lib/active_record/locking/optimistic.rb @@ -112,24 +112,20 @@ module ActiveRecord end def destroy_row - affected_rows = super + return super unless locking_enabled? - if locking_enabled? && affected_rows != 1 - raise ActiveRecord::StaleObjectError.new(self, "destroy") - end + locking_column = self.class.locking_column - affected_rows - end + affected_rows = self.class._delete_record( + self.class.primary_key => id_in_database, + locking_column => read_attribute_before_type_cast(locking_column) + ) - def relation_for_destroy - relation = super - - if locking_enabled? - locking_column = self.class.locking_column - relation = relation.where(locking_column => read_attribute_before_type_cast(locking_column)) + if affected_rows != 1 + raise ActiveRecord::StaleObjectError.new(self, "destroy") end - relation + affected_rows end module ClassMethods |