diff --git a/lib/graphql/schema/argument.rb b/lib/graphql/schema/argument.rb index 07165f1909..756870b632 100644 --- a/lib/graphql/schema/argument.rb +++ b/lib/graphql/schema/argument.rb @@ -86,7 +86,7 @@ def initialize(arg_name = nil, type_expr = nil, desc = nil, required: true, type end if required == :nullable - self.owner.validates(required: { argument: arg_name }) + self.owner.validates(required: { argument: arg_name, argument_definition: self }) end if definition_block diff --git a/lib/graphql/schema/validator/required_validator.rb b/lib/graphql/schema/validator/required_validator.rb index 69b30514c4..7a19420e59 100644 --- a/lib/graphql/schema/validator/required_validator.rb +++ b/lib/graphql/schema/validator/required_validator.rb @@ -37,8 +37,10 @@ class Validator class RequiredValidator < Validator # @param one_of [Array] A list of arguments, exactly one of which is required for this field # @param argument [Symbol] An argument that is required for this field + # @param argument_definition [GraphQL::Schema::Argument] The argument definition or instance, which may contain attributes needed by the validator # @param message [String] - def initialize(one_of: nil, argument: nil, message: nil, **default_options) + def initialize(one_of: nil, argument: nil, argument_definition: nil, message: nil, **default_options) + @argument_definition = argument_definition @one_of = if one_of one_of elsif argument