Class: ThroughHierarchy::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/through_hierarchy/builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(model) ⇒ Builder

Returns a new instance of Builder.



3
4
5
6
# File 'lib/through_hierarchy/builder.rb', line 3

def initialize(model)
  @model = model
  initialize_methods_class
end

Instance Method Details

#add_association(name, assoc) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'lib/through_hierarchy/builder.rb', line 13

def add_association(name, assoc)
  @model.hierarchical_associations[name] = assoc

  @model::ThroughHierarchyAssociationMethods.class_eval do
    define_method(name) do |reload = false|
      return @hierarchical_association_cache[name] if !reload && @hierarchical_association_cache.key?(name)
      @hierarchical_association_cache[name] = self.hierarchical_associations[name].find(self)
    end
  end
end

#initialize_methods_classObject



8
9
10
11
# File 'lib/through_hierarchy/builder.rb', line 8

def initialize_methods_class
  @model.const_set("ThroughHierarchyAssociationMethods", Module.new) unless defined? @model::ThroughHierarchyAssociationMethods
  @model.include @model::ThroughHierarchyAssociationMethods if !@model.ancestors.include?(@model::ThroughHierarchyAssociationMethods)
end