diff --git a/lib/params/base_validator.rb b/lib/params/base_validator.rb index bd46510a..9cc4adb3 100644 --- a/lib/params/base_validator.rb +++ b/lib/params/base_validator.rb @@ -14,6 +14,8 @@ module Params raise e unless validator.dry_run? rescue StandardError => e Rollbar.error(e) if defined?(Rollbar) + + raise e unless Rails.env.production? end attr_reader :params, :dry_run @@ -48,11 +50,11 @@ module Params def type(params, key, type, message: nil) return if params.blank? - return unless params.key?(key) + return if params[key].blank? - return if params[key].is_a?(type) + return if params[key].is_a?(type) || (type == Hash && params[key].is_a?(ActionController::Parameters)) - type = 'Object' if type == 'Hash' + type = 'Object' if type == Hash raise_error(message || "#{key} must be a #{type}") end @@ -84,6 +86,7 @@ module Params def boolean(params, key, message: nil) return if params.blank? return unless params.key?(key) + return if params[key].nil? value = ActiveModel::Type::Boolean.new.cast(params[key]) diff --git a/lib/params/submission_create_validator.rb b/lib/params/submission_create_validator.rb index e4d4a8a3..1a329287 100644 --- a/lib/params/submission_create_validator.rb +++ b/lib/params/submission_create_validator.rb @@ -33,10 +33,6 @@ module Params required(params, :template_id) required(params, %i[submission submissions]) - in_path(params, :submission) do |submission_params| - required(submission_params, :submitters) if params[:submission] - end - boolean(params, :send_email) boolean(params, :send_sms) type(params, :order, String) @@ -53,8 +49,14 @@ module Params value_in(params, :order, %w[preserved random], allow_nil: true) + return true if params[:submission].is_a?(Array) + + in_path(params, :submission) do |submission_params| + required(submission_params, :submitters) if params[:submission] + end + in_path_each(params, %i[submission submitters]) do |submitter_params| - required(submitter_params, :email) + required(submitter_params, %i[email phone name]) type(submitter_params, :name, String) type(submitter_params, :email, String)