Sha256: d17635869fa8f7b509a90271dcc5cf8d7cdfbc09b25e386652b8761708be71dc

Contents?: true

Size: 1.08 KB

Versions: 15

Compression:

Stored size: 1.08 KB

Contents

module NinjaModel
  module Associations
    class BelongsToAssociation < AssociationProxy
      def initialize(owner, reflection)
        @owner, @reflection = owner, reflection
      end

      def replace(record)
        if record.nil?
          @target = @owner[@reflection.primary_key_name] = nil
        else
          @target = (AssociationProxy === record ? record.target : record)
          @owner[@reflection.primary_key_name] = record_id(record) if record.persisted?
          @updated = true
        end
        loaded
        record
      end

      private

      def find_target
        if @reflection.options[:primary_key]
          @reflection.klass.scoped.where( @reflection.options[:primary_key] => @owner.send(@reflection.primary_key_name)).first
        else
          @reflection.klass.scoped.where( :id => @owner.send(@reflection.primary_key_name)).first
        end
      end

      def record_id(record)
        record.send(@reflection.options[:primary_key] || :id)
      end

      def foreign_key_present
        !@owner[@reflection.primary_key_name].nil?
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
ninja-model-0.8.1 lib/ninja_model/associations/belongs_to_association.rb
ninja-model-0.8.0 lib/ninja_model/associations/belongs_to_association.rb
ninja-model-0.7.3 lib/ninja_model/associations/belongs_to_association.rb
ninja-model-0.7.2 lib/ninja_model/associations/belongs_to_association.rb
ninja-model-0.7.1 lib/ninja_model/associations/belongs_to_association.rb
ninja-model-0.7.0 lib/ninja_model/associations/belongs_to_association.rb
ninja-model-0.6.2 lib/ninja_model/associations/belongs_to_association.rb
ninja-model-0.6.1 lib/ninja_model/associations/belongs_to_association.rb
ninja-model-0.6.0 lib/ninja_model/associations/belongs_to_association.rb
ninja-model-0.5.7 lib/ninja_model/associations/belongs_to_association.rb
ninja-model-0.5.6 lib/ninja_model/associations/belongs_to_association.rb
ninja-model-0.5.5 lib/ninja_model/associations/belongs_to_association.rb
ninja-model-0.5.4 lib/ninja_model/associations/belongs_to_association.rb
ninja-model-0.5.3 lib/ninja_model/associations/belongs_to_association.rb
ninja-model-0.5.2 lib/ninja_model/associations/belongs_to_association.rb