Module: Grape::DSL::Parameters
- Extended by:
- ActiveSupport::Concern
- Included in:
- Validations::ParamsScope
- Defined in:
- lib/grape/dsl/parameters.rb
Instance Method Summary collapse
- #all_or_none_of(*attrs) ⇒ Object
- #at_least_one_of(*attrs) ⇒ Object
- #exactly_one_of(*attrs) ⇒ Object
- #group(*attrs, &block) ⇒ Object
- #mutually_exclusive(*attrs) ⇒ Object
- #optional(*attrs, &block) ⇒ Object
- #params(params) ⇒ Object
- #requires(*attrs, &block) ⇒ Object
- #use(*names) ⇒ Object (also: #use_scope, #includes)
Instance Method Details
#all_or_none_of(*attrs) ⇒ Object
71 72 73 |
# File 'lib/grape/dsl/parameters.rb', line 71 def all_or_none_of(*attrs) validates(attrs, all_or_none_of: true) end |
#at_least_one_of(*attrs) ⇒ Object
67 68 69 |
# File 'lib/grape/dsl/parameters.rb', line 67 def at_least_one_of(*attrs) validates(attrs, at_least_one_of: true) end |
#exactly_one_of(*attrs) ⇒ Object
63 64 65 |
# File 'lib/grape/dsl/parameters.rb', line 63 def exactly_one_of(*attrs) validates(attrs, exactly_one_of: true) end |
#group(*attrs, &block) ⇒ Object
75 76 77 |
# File 'lib/grape/dsl/parameters.rb', line 75 def group(*attrs, &block) requires(*attrs, &block) end |
#mutually_exclusive(*attrs) ⇒ Object
59 60 61 |
# File 'lib/grape/dsl/parameters.rb', line 59 def mutually_exclusive(*attrs) validates(attrs, mutual_exclusion: true) end |
#optional(*attrs, &block) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/grape/dsl/parameters.rb', line 37 def optional(*attrs, &block) orig_attrs = attrs.clone opts = attrs.last.is_a?(Hash) ? attrs.pop : {} type = opts[:type] # check type for optional parameter group if attrs && block_given? fail Grape::Exceptions::MissingGroupTypeError.new if type.nil? fail Grape::Exceptions::UnsupportedGroupTypeError.new unless [Array, Hash].include?(type) end if opts[:using] require_optional_fields(attrs.first, opts) else validate_attributes(attrs, opts, &block) block_given? ? new_scope(orig_attrs, true, &block) : push_declared_params(attrs) end end |
#params(params) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/grape/dsl/parameters.rb', line 79 def params(params) params = @parent.params(params) if @parent if @element if params.is_a?(Array) params = params.flat_map { |el| el[@element] || {} } elsif params.is_a?(Hash) params = params[@element] || {} else params = {} end end params end |
#requires(*attrs, &block) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/grape/dsl/parameters.rb', line 21 def requires(*attrs, &block) orig_attrs = attrs.clone opts = attrs.last.is_a?(Hash) ? attrs.pop : {} opts.merge!(presence: true) if opts[:using] require_required_and_optional_fields(attrs.first, opts) else validate_attributes(attrs, opts, &block) block_given? ? new_scope(orig_attrs, &block) : push_declared_params(attrs) end end |
#use(*names) ⇒ Object Also known as: use_scope, includes
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/grape/dsl/parameters.rb', line 8 def use(*names) named_params = Grape::DSL::Configuration.stacked_hash_to_hash(@api.namespace_stackable(:named_params)) || {} = names.last.is_a?(Hash) ? names.pop : {} names.each do |name| params_block = named_params.fetch(name) do fail "Params :#{name} not found!" end instance_exec(, ¶ms_block) end end |