Sha256: d357d662aae112fc6cf40e95509687a019f6d9186ede4a2118109834866572ce
Contents?: true
Size: 1.29 KB
Versions: 3
Compression:
Stored size: 1.29 KB
Contents
# encoding: UTF-8 module MongoMapper module Plugins module Associations class SingleAssociation < Base def setup(model) @model = model model.associations_module.module_eval(<<-end_eval, __FILE__, __LINE__ + 1) def #{name} proxy = get_proxy(associations[#{name.inspect}]) proxy.nil? ? nil : proxy.read end def #{name}=(value) association = associations[#{name.inspect}] proxy = get_proxy(association) if proxy.nil? || proxy.target != value proxy = build_proxy(association) end proxy.replace(value) proxy.read end def #{name}? get_proxy(associations[#{name.inspect}]).present? end def build_#{name}(attrs={}, &block) get_proxy(associations[#{name.inspect}]).build(attrs, &block) end def create_#{name}(attrs={}, &block) get_proxy(associations[#{name.inspect}]).create(attrs, &block) end def create_#{name}!(attrs={}, &block) get_proxy(associations[#{name.inspect}]).create!(attrs, &block) end end_eval end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems