class NinjaModel::Associations::Builder::Association

Attributes

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

Public Class Methods

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

Public Instance Methods

build() click to toggle source
# File lib/ninja_model/associations/builder/association.rb, line 21
def build
  validate_options
  reflection = model.create_reflection(self.class.macro, name, options, model)
  define_accessors
  reflection
end

Private Instance Methods

define_accessors() click to toggle source
# File lib/ninja_model/associations/builder/association.rb, line 34
def define_accessors
  define_readers
  define_writers
end
define_readers() click to toggle source
# File lib/ninja_model/associations/builder/association.rb, line 39
def define_readers
  name = self.name

  model.redefine_method(name) do |*params|
    association(name).reader(*params)
  end
end
define_writers() click to toggle source
# File lib/ninja_model/associations/builder/association.rb, line 47
def define_writers
  name = self.name

  model.redefine_method("#{name}=") do |value|
    association(name).writer(value)
  end
end
validate_options() click to toggle source
# File lib/ninja_model/associations/builder/association.rb, line 30
def validate_options
  options.assert_valid_keys(self.class.valid_options)
end