Sha256: 7023e4aa4e5cf7baa03a604569c8f22f057be6257ea07cdf2c938ec8a76bcab4
Contents?: true
Size: 1.36 KB
Versions: 6
Compression:
Stored size: 1.36 KB
Contents
# encoding: UTF-8 module MongoMapper module Plugins module Associations class BelongsToProxy < Proxy def replace(doc) if doc doc.save if !doc.persisted? id = doc.id end reset proxy_owner[association.foreign_key] = id unless doc.nil? loaded @target = doc end @target end def build(attrs={}, &block) instantiate_target(:new, attrs, &block) end def create(attrs={}, &block) instantiate_target(:create, attrs, &block) end def create!(attrs={}, &block) instantiate_target(:create!, attrs, &block) end def save_to_collection(options={}) @target.save(options) if @target end protected def find_target return nil if proxy_owner[association.foreign_key].nil? klass.find_by_id(proxy_owner[association.foreign_key]) end def instantiate_target(instantiator, attrs={}, &block) @target = klass.send(instantiator, attrs, &block) proxy_owner[association.foreign_key] = @target.id loaded @target end private def stale_target? loaded? && proxy_owner[association.foreign_key] != @target&.id end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems