module ActiveRecord::Locking::Optimistic::ClassMethods
Constants
- DEFAULT_LOCKING_COLUMN
Public Instance Methods
locking_column()
click to toggle source
The version column used for optimistic locking. Defaults to
lock_version
.
# File lib/active_record/locking/optimistic.rb, line 140 def locking_column @locking_column = DEFAULT_LOCKING_COLUMN unless defined?(@locking_column) @locking_column end
locking_column=(value)
click to toggle source
Set the column to use for optimistic locking. Defaults to
lock_version
.
# File lib/active_record/locking/optimistic.rb, line 134 def locking_column=(value) reload_schema_from_cache @locking_column = value.to_s end
locking_enabled?()
click to toggle source
Returns true if the lock_optimistically
flag is set to true
(which it is, by default) and the table includes the
locking_column
column (defaults to lock_version
).
# File lib/active_record/locking/optimistic.rb, line 129 def locking_enabled? lock_optimistically && columns_hash[locking_column] end
reset_locking_column()
click to toggle source
Reset the column used for optimistic locking back to the
lock_version
default.
# File lib/active_record/locking/optimistic.rb, line 146 def reset_locking_column self.locking_column = DEFAULT_LOCKING_COLUMN end
update_counters(id, counters)
click to toggle source
Make sure the lock version column gets updated when counters are updated.
Calls superclass method
# File lib/active_record/locking/optimistic.rb, line 152 def update_counters(id, counters) counters = counters.merge(locking_column => 1) if locking_enabled? super end
Private Instance Methods
inherited(subclass)
click to toggle source
We need to apply this decorator here, rather than on module inclusion. The closure created by the matcher would otherwise evaluate for `ActiveRecord::Base`, not the sub class being decorated. As such, changes to `lock_optimistically`, or `locking_column` would not be picked up.
Calls superclass method
# File lib/active_record/locking/optimistic.rb, line 163 def inherited(subclass) subclass.class_eval do is_lock_column = ->(name, _) { lock_optimistically && name == locking_column } decorate_matching_attribute_types(is_lock_column, "_optimistic_locking") do |type| LockingType.new(type) end end super end