class ActiveRecord::Base

Attributes

locking_enabled[R]

Public Class Methods

enable_locking(options = {}) click to toggle source
# File lib/activerecord/tablelocks/activerecord.rb, line 7
def enable_locking(options = {})
  @locking_enabled = true
  @lock_targets = {
    :class_names => [*options[:class_names]].compact,
    :table_names => [*options[:table_names]].compact
  }
end
lock_targets() click to toggle source
# File lib/activerecord/tablelocks/activerecord.rb, line 15
def lock_targets
  @lock_targets ||= {
    :class_names => [],
    :table_names => []
  }
end
tables_to_lock() click to toggle source
# File lib/activerecord/tablelocks/activerecord.rb, line 22
def tables_to_lock
  return [] unless @locking_enabled
  [quoted_table_name,
    *@lock_targets[:table_names].map{|table_name| connection.quote_table_name(table_name) },
    *@lock_targets[:class_names].map{|class_name| class_name.constantize.quoted_table_name }].sort.uniq
end

Public Instance Methods

add_to_transaction() click to toggle source
Calls superclass method
# File lib/activerecord/tablelocks/activerecord.rb, line 30
def add_to_transaction
  if self.class.locking_enabled
    self.class.connection.lock_tables self.class.tables_to_lock
  end
  super
end