Class: CachedCounter::RollbackByMethodCallListener

Inherits:
Object
  • Object
show all
Defined in:
lib/cached_counter.rb

Instance Method Summary collapse

Constructor Details

#initialize(model_class:, id:, attribute:, method:) ⇒ RollbackByMethodCallListener

Returns a new instance of RollbackByMethodCallListener.



231
232
233
234
235
236
# File 'lib/cached_counter.rb', line 231

def initialize(model_class:, id:, attribute:, method:)
  @model_class = model_class
  @id = id
  @attribute = attribute
  @method = method
end

Instance Method Details

#committed!Object

See Also:

  • 3: https://github.com/rails/rails/blob/v3.2.18/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb#L372
  • 4: https://github.com/rails/rails/blob/v4.1.4/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb#L147


248
249
250
# File 'lib/cached_counter.rb', line 248

def committed!
  nil
end

#has_transactional_callbacks?Boolean

called only when Rails is 4+ Without this method implemented, you will see ‘undefined method `has_transactional_callbacks?’ for #<CachedCounter::RollbackByMethodCallListener:0x007f5af749cd80>‘ when the listener is passed to #add_transaction_record

Returns:

  • (Boolean)

See Also:

  • 4: https://github.com/rails/rails/blob/v4.1.4/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb#L125


242
243
244
# File 'lib/cached_counter.rb', line 242

def has_transactional_callbacks?
  true
end

#rolledback!(force_restore_state = false) ⇒ Object

See Also:

  • ActiveRecord::Transactions::rolledback!
  • 3: https://github.com/rails/rails/blob/v3.2.18/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb#L357
  • 4: https://github.com/rails/rails/blob/v4.1.4/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb#L136


255
256
257
# File 'lib/cached_counter.rb', line 255

def rolledback!(force_restore_state = false)
  CachedCounter.new(model_class: @model_class, id: @id, attribute: @attribute).send(@method)
end