Sha256: 7c0d8b7d2ffc6ce0a0378b2ab98d1787d76e04c332c8929469f5d9b81847079f
Contents?: true
Size: 1.31 KB
Versions: 7
Compression:
Stored size: 1.31 KB
Contents
# frozen_string_literal: true require_relative 'value' 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 cast(args = {}) value = args.fetch(:value) return if value.nil? many_array_class = LedgerSync::ResourceAttribute::Reference::Many::ManyArray return value if value.is_a?(many_array_class) unless value.is_a?(Array) raise "Cannot convert #{value.class} to LedgerSync::ResourceAttribute::Reference::Many::ManyArray" end many_array_class.new(value) end def type :reference_many end def valid?(args = {}) value = args.fetch(:value) return false unless value.is_a?(Array) return true if (resource_classes & value.map(&:class)).any? return true if value.is_a?(Array) && value.empty? false end private def resource_classes @resource_classes ||= if resource_class.is_a?(Array) resource_class else [resource_class] end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems