class NinjaModel::Associations::Builder::CollectionAssociation

Constants

CALLBACKS

Public Class Methods

build(model, name, options, &extension) click to toggle source
# File lib/ninja_model/associations/builder/collection_association.rb, line 12
def self.build(model, name, options, &extension)
  new(model, name, options, &extension).build
end
new(model, name, options, &extension) click to toggle source
# File lib/ninja_model/associations/builder/collection_association.rb, line 16
def initialize(model, name, options, &extension)
  super(model, name, options)
end

Public Instance Methods

build() click to toggle source
# File lib/ninja_model/associations/builder/collection_association.rb, line 20
def build
  reflection = super
  CALLBACKS.each { |callback_name| define_callback(callback_name) }
  reflection
end
writable?() click to toggle source
# File lib/ninja_model/associations/builder/collection_association.rb, line 26
def writable?
  true
end

Private Instance Methods

define_callback(callback_name) click to toggle source
# File lib/ninja_model/associations/builder/collection_association.rb, line 32
def define_callback(callback_name)
  full_callback_name = "#{callback_name}_for_#{name}"

  model.class_attribute full_callback_name.to_sym unless model.method_defined?(full_callback_name)

  model.send("#{full_callback_name}=", Array.wrap(options[callback_name.to_sym]))
end
define_readers() click to toggle source
# File lib/ninja_model/associations/builder/collection_association.rb, line 40
def define_readers
  super

  name = self.name
  model.redefine_method("#{name.to_s.singularize}_ids") do
    association(name).ids_reader
  end
end
define_writers() click to toggle source
# File lib/ninja_model/associations/builder/collection_association.rb, line 49
def define_writers
  super

  name = self.name
  model.redefine_method("#{name.to_s.singularize}_ids=") do |ids|
    association(name).ids_writer(ids)
  end
end