Sha256: 6ebc9444796d304aec93ca4346734872db88754b56b72878c64c183ff69187d5

Contents?: true

Size: 867 Bytes

Versions: 2

Compression:

Stored size: 867 Bytes

Contents

module Superstore
  module Associations
    class BelongsTo < Association
      def reader
        unless loaded?
          self.target = get_record
        end

        target
      end

      def writer(record)
        self.target = record
        owner.send("#{reflection.foreign_key}=", record.try(reflection.primary_key))
        if reflection.polymorphic?
          owner.send("#{reflection.polymorphic_column}=", record.class.name)
        end
      end

      def belongs_to?; true; end

      private

        def get_record
          record_id = owner.send(reflection.foreign_key).presence
          return unless record_id

          if reflection.default_primary_key?
            association_class.find_by_id(record_id)
          else
            association_class.find_by(reflection.primary_key => record_id)
          end
        end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
superstore-3.0.0 lib/superstore/associations/belongs_to.rb
superstore-2.5.0 lib/superstore/associations/belongs_to.rb