Module: Statinize::Statinizable

Defined in:
lib/statinize/statinizable.rb

Defined Under Namespace

Modules: ClassMethods, PrependedMethods

Class Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/statinize/statinizable.rb', line 3

def self.included(klass)
  klass.extend(ClassMethods)
  klass.prepend(PrependedMethods)

  statinized_ancestors = klass.ancestors
    .reject { |a| a == klass || a == Statinize::Statinizable }
    .select { |a| a.ancestors.include? Statinize::Statinizable }

  if statinized_ancestors.any?
    klass.instance_variable_set("@statinizer", Statinizer.new(klass))

    statinized_ancestors.each do |ancestor|
      klass.statinizer.populate(ancestor.statinizer.attributes) if ancestor.statinizer
    end
  end
end