Class: SelfishAssociations::Builder

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

Instance Method Summary collapse

Constructor Details

#initialize(model) ⇒ Builder

Returns a new instance of Builder.



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

def initialize(model)
  @model = model
end

Instance Method Details

#add_association(name, assoc) ⇒ Object



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

def add_association(name, assoc)
  initialize_methods_class
  @model.selfish_associations[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_classObject



7
8
9
10
# 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