class ActiveMongoid::Associations::DocumentRelation::Referenced::One

Public Class Methods

new(base, target, metadata) click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/one.rb, line 7
def initialize(base, target, metadata)
  init(base, target, metadata) do
    bind_one
  end
end

Private Class Methods

builder(base, meta, object) click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/one.rb, line 57
def builder(base, meta, object)
  ActiveMongoid::Associations::Builders::One.new(base, meta, object)
end
criteria(metadata, object, type = nil) click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/one.rb, line 61
def criteria(metadata, object, type = nil)
  crit = metadata.klass.where(metadata.foreign_key => object)
  if metadata.polymorphic?
    crit = crit.where(metadata.type => type.name)
  end
  crit
end
foreign_key(name) click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/one.rb, line 37
def foreign_key(name)
  "#{name}#{foreign_key_suffix}"
end
foreign_key_default() click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/one.rb, line 41
def foreign_key_default
  nil
end
foreign_key_suffix() click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/one.rb, line 45
def foreign_key_suffix
  "_id"
end
macro() click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/one.rb, line 53
def macro
  :has_one_document
end
primary_key_default() click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/one.rb, line 49
def primary_key_default
  "id"
end
stores_foreign_key?() click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/one.rb, line 33
def stores_foreign_key?
  false
end

Public Instance Methods

substitute(replacement) click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/one.rb, line 13
def substitute(replacement)
  unbind_one
  if base.persisted?
    if __metadata__.destructive?
      send(__metadata__.dependent)
    else
      save if persisted?
    end
  end
  One.new(base, replacement, __metadata__) if replacement
end

Private Instance Methods

binding() click to toggle source
# File lib/active_mongoid/associations/document_relation/referenced/one.rb, line 27
def binding
  Bindings::One.new(base, target, __metadata__)
end