class SelfishAssociations::Builder

Public Class Methods

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

Public Instance Methods

add_association(name, assoc) click to toggle source
# File lib/selfish_associations/builder.rb, line 12
def add_association(name, assoc)
  initialize_methods_class
  @model.selfish_associations = @model.selfish_associations.merge(name => assoc)

  @model::SelfishAssociationMethods.class_eval do
    define_method(name) do |reload = false|
      return @selfish_association_cache[name] if !reload && @selfish_association_cache.key?(name)
      @selfish_association_cache[name] = self.selfish_associations[name].find(self)
    end
  end
end
initialize_methods_class() click to toggle source
# File lib/selfish_associations/builder.rb, line 7
def initialize_methods_class
  @model.const_set("SelfishAssociationMethods", Module.new) unless defined? @model::SelfishAssociationMethods
  @model.include @model::SelfishAssociationMethods if !@model.ancestors.include?(@model::SelfishAssociationMethods)
end