Module: GuardAgainstPhysicalDelete::SupportCounterCache::Associations
- Defined in:
- lib/guard_against_physical_delete/support_counter_cache/3.0.10/associations.rb,
lib/guard_against_physical_delete/support_counter_cache/associations/builder/belongs_to.rb,
lib/guard_against_physical_delete/support_counter_cache/3.2_and_4.0/associations/builder/belongs_to.rb
Defined Under Namespace
Modules: Builder
Class Method Summary collapse
Class Method Details
.included(obj) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/guard_against_physical_delete/support_counter_cache/3.0.10/associations.rb', line 4 def self.included(obj) class << obj def add_counter_cache_callbacks_with_logical_delete(reflection) add_counter_cache_callbacks_without_logical_delete(reflection) return unless logical_delete? add_logical_delete_counter_cache_callback(reflection) end alias_method_chain :add_counter_cache_callbacks, :logical_delete def add_logical_delete_counter_cache_callback(reflection) cache_column = reflection.counter_cache_column logical_delete_method_name = "belongs_to_counter_cache_before_logical_delete_for_#{reflection.name}".to_sym define_method(logical_delete_method_name) do delete_column = self.logical_delete_column next unless send("#{delete_column}_changed?") next unless send("#{delete_column}_was").nil? association = send(reflection.name) association.class.decrement_counter(cache_column, association.id) unless association.nil? end revive_method_name = "belongs_to_counter_cache_before_revive_for_#{reflection.name}".to_sym define_method(revive_method_name) do delete_column = self.logical_delete_column next unless send("#{delete_column}_changed?") next if send("#{delete_column}_was").nil? next unless send(delete_column).nil? clear_association_cache association = send(reflection.name) association.class.increment_counter(cache_column, association.id) unless association.nil? end before_update(logical_delete_method_name, revive_method_name) end end end |