Sha256: 35ddffdcabe1b4b98224acf69e8ebc368084a1d2fcfec074e312014f2a7a82ac

Contents?: true

Size: 783 Bytes

Versions: 5

Compression:

Stored size: 783 Bytes

Contents

require 'rom/support/inflector'

module ROM
  module Associations
    # @api private
    class ThroughIdentifier
      # @api private
      attr_reader :source

      # @api private
      attr_reader :target

      # @api private
      attr_reader :assoc_name

      # @api private
      def self.[](source, target, assoc_name = nil)
        new(source, target, assoc_name || default_assoc_name(target))
      end

      # @api private
      def self.default_assoc_name(relation)
        Inflector.singularize(relation).to_sym
      end

      # @api private
      def initialize(source, target, assoc_name)
        @source = source
        @target = target
        @assoc_name = assoc_name
      end

      # @api private
      def to_sym
        source
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rom-core-4.2.1 lib/rom/associations/through_identifier.rb
rom-core-4.2.0 lib/rom/associations/through_identifier.rb
rom-core-4.1.2 lib/rom/associations/through_identifier.rb
rom-core-4.1.1 lib/rom/associations/through_identifier.rb
rom-core-4.1.0 lib/rom/associations/through_identifier.rb