From 076c3d805a927d4af6f16445f408a4b3bd405bb2 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Sun, 23 Aug 2026 18:49:32 +0300 Subject: [PATCH] fix find_or_initialize_submitter --- app/controllers/start_form_controller.rb | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/app/controllers/start_form_controller.rb b/app/controllers/start_form_controller.rb index b52138ab..7a6aef60 100644 --- a/app/controllers/start_form_controller.rb +++ b/app/controllers/start_form_controller.rb @@ -88,14 +88,21 @@ class StartFormController < ApplicationController private def find_or_initialize_submitter(template, submitter_params) - submitter = Submitters::StartForm.find_or_initialize_submitter( - template, submitter_params, exclude_completed: params[:resubmit].present?, - request:, current_user:, ability: current_user && current_ability - ) + required_fields = template.preferences.fetch('link_form_fields', ['email']) - template.preferences.fetch('link_form_fields', ['email']).each do |key| - submitter.errors.add(key.to_sym, :blank) if submitter_params[key].blank? - end + blank_fields = required_fields.select { |key| submitter_params[key].blank? } + + submitter = + if blank_fields.present? + Submitter.new(submitter_params) + else + Submitters::StartForm.find_or_initialize_submitter( + template, submitter_params, exclude_completed: params[:resubmit].present?, + request:, current_user:, ability: current_user && current_ability + ) + end + + blank_fields.each { |key| submitter.errors.add(key.to_sym, :blank) } submitter end