Sha256: aaa5c2b97e4887f3355e67190474efb3b116e404604bcdcaec7eae0d6ddc6d96

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

require 'super_model/associations'

class SuperModel
  module Associations
    
    module HasOne
      
      def has_one(resource_name, options={})
        
        options[:resource_name] ||= SuperModel::Associations.sanitize_resource_name( resource_name, :singularize )
        options[:foreign_key] ||= SuperModel::Associations.foreign_key_for( options[:resource_name], :singularize )
        
        SuperModel::Associations.def_foreign_key_methods( self, options[:foreign_key] )
        
        SuperModel::Associations.def_association_methods(
          class: self,
          resource_name: options[:resource_name],
          foreign_key: options[:foreign_key],
          getter_proc: Proc.new do
            ObjectSpace._id2ref( instance_variable_get("@#{ options[:foreign_key] }") ) if instance_variable_defined?("@#{ options[:foreign_key] }")
          end,
          setter_proc: Proc.new do |value|
            send( "#{ options[:foreign_key] }=", value.object_id )
          end
        )
        
      end
      
    end
    
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
super_model-0.0.1 lib/super_model/associations/has_one.rb