class NinjaModel::Associations::SingularAssociation

Public Instance Methods

build(attributes = {}, options = {}) { |record| ... } click to toggle source
# File lib/ninja_model/associations/singular_association.rb, line 26
def build(attributes = {}, options = {})
  record = build_record(attributes, options)
  yield(record) if block_given?
  set_new_record(record)
  record
end
create(attributes = {}, options = {}, &block) click to toggle source
# File lib/ninja_model/associations/singular_association.rb, line 18
def create(attributes = {}, options = {}, &block)
  create_record(attributes, options, &block)
end
create!(attributes = {}, options = {}, &block) click to toggle source
# File lib/ninja_model/associations/singular_association.rb, line 22
def create!(attributes = {}, options = {}, &block)
  create_record(attributes, options, true, &block)
end
reader(force_reload = false) click to toggle source
# File lib/ninja_model/associations/singular_association.rb, line 4
def reader(force_reload = false)
  if force_reload
    klass.uncached { reload }
  elsif !loaded? || stale_target?
    reload
  end

  target
end
writer(record) click to toggle source
# File lib/ninja_model/associations/singular_association.rb, line 14
def writer(record)
  replace(record)
end

Private Instance Methods

create_record(attributes, options, raise_error = false) { |record| ... } click to toggle source
# File lib/ninja_model/associations/singular_association.rb, line 51
def create_record(attributes, options, raise_error = false)
  record = build_record(attributes, options)
  yield(record) if block_given?
  saved = record.save
  set_new_record(record)
  raise RecordInvalid.new(record) if !saved && raise_error
  record
end
create_scope() click to toggle source
# File lib/ninja_model/associations/singular_association.rb, line 35
def create_scope
  scoped.scope_for_create.stringify_keys.except(klass.primary_key)
end
find_target() click to toggle source
# File lib/ninja_model/associations/singular_association.rb, line 39
def find_target
  scoped.first.tap { |record| set_inverse_instance(record) }
end
replace(record) click to toggle source
# File lib/ninja_model/associations/singular_association.rb, line 43
def replace(record)
  raise NotImplementedError, "Subclasses must implement a replace(record) method"
end
set_new_record(record) click to toggle source
# File lib/ninja_model/associations/singular_association.rb, line 47
def set_new_record(record)
  replace(record)
end