method
_update_row
v6.0.0 -
Show latest stable
-
0 notes -
Class: ActiveRecord::Locking::Optimistic
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0
- 3.0.9
- 3.1.0
- 3.2.1
- 3.2.8
- 3.2.13
- 4.0.2
- 4.1.8
- 4.2.1
- 4.2.7
- 4.2.9
- 5.0.0.1
- 5.1.7 (0)
- 5.2.3 (0)
- 6.0.0 (0)
- 6.1.3.1 (0)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (0)
- 7.1.3.4 (0)
- What's this?
_update_row(attribute_names, attempted_action = "update")
private
Hide source
# File activerecord/lib/active_record/locking/optimistic.rb, line 78 def _update_row(attribute_names, attempted_action = "update") return super unless locking_enabled? begin locking_column = self.class.locking_column previous_lock_value = read_attribute_before_type_cast(locking_column) attribute_names << locking_column self[locking_column] += 1 affected_rows = self.class._update_record( attributes_with_values(attribute_names), @primary_key => id_in_database, locking_column => previous_lock_value ) if affected_rows != 1 raise ActiveRecord::StaleObjectError.new(self, attempted_action) end affected_rows # If something went wrong, revert the locking_column value. rescue Exception self[locking_column] = previous_lock_value.to_i raise end end