module ActiveRecord::Acts::List::NoUpdate
def self.included(base)
def self.included(base) base.extend ClassMethods end
def act_as_list_no_update?
def act_as_list_no_update? NoUpdate.applied_to?(self.class) end
def add_klass(klass)
def add_klass(klass) extracted_klasses[klass] = 0 unless extracted_klasses.key?(klass) extracted_klasses[klass] += 1 end
def applied_to?(klass)
def applied_to?(klass) !(klass.ancestors & extracted_klasses.keys).empty? end
def apply_to(klasses)
def apply_to(klasses) klasses.map {|klass| add_klass(klass)} yield ensure klasses.map {|klass| remove_klass(klass)} end
def extracted_klasses
def extracted_klasses Thread.current[:act_as_list_no_update] ||= {} end
def remove_klass(klass)
def remove_klass(klass) extracted_klasses[klass] -= 1 extracted_klasses.delete(klass) if extracted_klasses[klass] <= 0 end