Module: ArCache::ActiveRecord::ConnectionAdapters::DatabaseStatements

Defined in:
lib/ar_cache/active_record/connection_adapters/abstract/database_statements.rb

Instance Method Summary collapse

Instance Method Details

#delete(arel) ⇒ Object



26
27
28
# File 'lib/ar_cache/active_record/connection_adapters/abstract/database_statements.rb', line 26

def delete(arel, ...)
  super.tap { |num| update_ar_cache(arel) unless num.zero? }
end

#truncate(table_name) ⇒ Object



30
31
32
# File 'lib/ar_cache/active_record/connection_adapters/abstract/database_statements.rb', line 30

def truncate(table_name, ...)
  super.tap { update_ar_cache_by_table(table_name) }
end

#truncate_tables(*table_names) ⇒ Object



34
35
36
37
38
# File 'lib/ar_cache/active_record/connection_adapters/abstract/database_statements.rb', line 34

def truncate_tables(*table_names)
  super.tap do
    table_names.each { |table_name| update_ar_cache_by_table(table_name) }
  end
end

#update(arel) ⇒ Object

def insert(arel, …)

super.tap do
  if arel.is_a?(String)
    sql = arel.downcase
    ArCache::Table.all.each do |table|
      current_transaction.add_changed_table(table.name) if sql.include?(table.name)
    end
  else # is Arel::InsertManager
    klass = arel.ast.relation.instance_variable_get(:@klass)
    current_transaction.add_changed_table(klass.table_name)
  end
end

end alias create insert



22
23
24
# File 'lib/ar_cache/active_record/connection_adapters/abstract/database_statements.rb', line 22

def update(arel, ...)
  super.tap { |num| update_ar_cache(arel) unless num.zero? }
end