Module: ThroughHierarchy::Base::ClassMethods

Defined in:
lib/through_hierarchy/base.rb

Instance Method Summary collapse

Instance Method Details

#inherited(child) ⇒ Object

deep_dup these class attributes on inheritance so we can safely use in-place modifiers



22
23
24
25
# File 'lib/through_hierarchy/base.rb', line 22

def inherited(child)
  child.hierarchical_associations = self.hierarchical_associations.deep_dup
  super
end

#joins_through_hierarchy(name) ⇒ Object



31
32
33
34
# File 'lib/through_hierarchy/base.rb', line 31

def joins_through_hierarchy(name)
  hierarchical_associations.key?(name) or raise ThroughHierarchyAssociationMissingError, "No association named #{name} was found. Perhaps you misspelled it?"
  hierarchical_associations[name].join
end

#through_hierarchy(members, &blk) ⇒ Object



27
28
29
# File 'lib/through_hierarchy/base.rb', line 27

def through_hierarchy(members, &blk)
  Hierarchy.new(self, members).instance_eval(&blk)
end