class MongoMapper::Plugins::Associations::BelongsToAssociation

Public Instance Methods

add_counter_cache() click to toggle source
# File lib/mongo_mapper/plugins/associations/belongs_to_association.rb, line 52
def add_counter_cache
  options = {}
  if @options[:counter_cache] && @options[:counter_cache] != true
    options[:field] = @options[:counter_cache]
  end

  @model.counter_cache name, options
end
add_touch_callbacks() click to toggle source
# File lib/mongo_mapper/plugins/associations/belongs_to_association.rb, line 30
def add_touch_callbacks
  name        = self.name
  method_name = :"belongs_to_touch_after_save_or_destroy_for_#{name}"
  touch       = options.fetch(:touch)

  @model.send(:define_method, method_name) do
    record = send(name)

    unless record.nil?
      if touch == true
        record.touch
      else
        record.touch(touch)
      end
    end
  end

  @model.after_save(method_name)
  @model.after_touch(method_name)
  @model.after_destroy(method_name)
end
autosave?() click to toggle source
# File lib/mongo_mapper/plugins/associations/belongs_to_association.rb, line 26
def autosave?
  options.fetch(:autosave, false)
end
embeddable?() click to toggle source
# File lib/mongo_mapper/plugins/associations/belongs_to_association.rb, line 10
def embeddable?
  false
end
proxy_class() click to toggle source
# File lib/mongo_mapper/plugins/associations/belongs_to_association.rb, line 14
def proxy_class
  @proxy_class ||= polymorphic? ? BelongsToPolymorphicProxy : BelongsToProxy
end
setup(model) click to toggle source
Calls superclass method
# File lib/mongo_mapper/plugins/associations/belongs_to_association.rb, line 18
def setup(model)
  model.key foreign_key, ObjectId unless model.key?(foreign_key)
  model.key type_key_name, String unless model.key?(type_key_name) if polymorphic?
  super
  add_touch_callbacks if touch?
  add_counter_cache if counter_cache?
end
type_key_name() click to toggle source
# File lib/mongo_mapper/plugins/associations/belongs_to_association.rb, line 6
def type_key_name
  "#{as}_type"
end