Sha256: 8b10e7f3de9dadcc6f9383f2599dba225a52ab89df9a302f79f01de26bf14611

Contents?: true

Size: 863 Bytes

Versions: 2

Compression:

Stored size: 863 Bytes

Contents

# frozen_string_literal: true

module LedgerSync
  module Type
    class ReferenceMany < Value # :nodoc:
      include ValueMixin

      attr_reader :resource_class

      def initialize(resource_class:)
        @resource_class = resource_class
        super()
      end

      def error_message(attribute:, resource:, value:)
        return super unless value.is_a?(Array)

        invalid_classes = value.reject { |e| e.is_a?(resource_class) }.map(&:class)
        "Attribute #{attribute.name} for #{resource.class.name} should be an array of #{resource_class.name}.  Given array containing: #{invalid_classes.join(', ')}"
      end

      def type
        :reference_many
      end

      def valid_without_casting?(value:)
        return false unless value.is_a?(Array)

        value.reject { |e| e.is_a?(resource_class) }.empty?
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ledger_sync-1.1.3 lib/ledger_sync/type/reference_many.rb
ledger_sync-1.1.2 lib/ledger_sync/type/reference_many.rb