Add skip_email_confirmation option; fix SQLite length validation

Introduce config.skip_email_confirmation in application.rb.dist.
When set to true, new registrations are automatically confirmed
without requiring email verification — useful for installations
where outgoing email is not configured or for development/testing.
Implemented by calling skip_confirmation! in build_resource before
the record is saved, so no confirmation email is ever sent.

Also fix ArgumentError raised in length validations when
type_for_attribute(:column).limit returns nil, which happens with
SQLite for string columns that have no explicit limit in the
migration. Guard with || Float::INFINITY so the validation is
effectively skipped when the database imposes no limit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-28 15:57:50 +00:00
parent ea8bff9b3d
commit 9ad922e3a1
3 changed files with 17 additions and 2 deletions

View File

@@ -8,6 +8,14 @@ class RegistrationsController < Devise::RegistrationsController
protected
def build_resource(hash = {})
super
# Skip the email confirmation step when the admin has opted out of it via
# config.skip_email_confirmation in application.rb. The account becomes
# active immediately so the user can sign in right after registering.
resource.skip_confirmation! if Rails.application.config.skip_email_confirmation
end
def update_resource(resource, params)
# Based on update_with_password()
if params[:password].blank?