class ThroughHierarchy::Builder

Public Class Methods

new(model) click to toggle source
# File lib/through_hierarchy/builder.rb, line 3
def initialize(model)
  @model = model
  initialize_methods_class
end

Public Instance Methods

add_association(name, assoc) click to toggle source
# 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_class() click to toggle source
# 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