class Superstore::Associations::Builder::Association

Attributes

model[R]
name[R]
options[R]

Public Class Methods

build(model, name, options) click to toggle source
# File lib/superstore/associations/builder/association.rb, line 3
def self.build(model, name, options)
  new(model, name, options).build
end
new(model, name, options) click to toggle source
# File lib/superstore/associations/builder/association.rb, line 8
def initialize(model, name, options)
  @model, @name, @options = model, name, options
end

Public Instance Methods

build() click to toggle source
# File lib/superstore/associations/builder/association.rb, line 12
def build
  define_writer
  define_reader

  reflection = Superstore::Associations::Reflection.new(macro, name, model, options)
  ActiveRecord::Reflection.add_reflection model, name, reflection
end
define_reader() click to toggle source
# File lib/superstore/associations/builder/association.rb, line 31
def define_reader
  name = self.name
  mixin.redefine_method(name) do
    association(name).reader
  end
end
define_writer() click to toggle source
# File lib/superstore/associations/builder/association.rb, line 24
def define_writer
  name = self.name
  mixin.redefine_method("#{name}=") do |records|
    association(name).writer(records)
  end
end
mixin() click to toggle source
# File lib/superstore/associations/builder/association.rb, line 20
def mixin
  model.generated_association_methods
end