app/models/concerns/counter/definable.rb in counterwise-0.1.2 vs app/models/concerns/counter/definable.rb in counterwise-0.1.3
- old
+ new
@@ -2,16 +2,27 @@
# counter.definition # => Counter::Definition
module Counter::Definable
extend ActiveSupport::Concern
included do
+ def definition= definition
+ @definition = definition
+ end
+
# Fetch the definition for this counter
def definition
- if parent.nil?
- # We don't have a parent, so we're a global counter
- Counter::Definition.find_definition name
- else
- parent.class.counter_configs.find { |c| c.record_name == name }
+ @definition ||= begin
+ if parent.nil?
+ # We don't have a parent, so we're a global counter
+ Counter::Definition.find_definition name
+ else
+ parent.class.ancestors.find do |ancestor|
+ return nil if ancestor == ApplicationRecord
+ next unless ancestor.respond_to?(:counter_configs)
+ config = ancestor.counter_configs.find { |c| c.record_name == name }
+ return config if config
+ end
+ end
end
end
end
end