FIX: Conform EmailLog#bounce_error_code to RFC (#16010)

This commit makes sure that the email log's bounce_error_code
conforms to the SMTP error code RFC on save, so that
it is always in the format X.X.X or XXX without any
additional string details. Also included is a migration
to fix this issue for past records.
This commit is contained in:
Martin Brennan
2022-02-21 11:26:39 +10:00
committed by GitHub
parent 189df5ef43
commit 01ef1d08fc
3 changed files with 46 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
# frozen_string_literal: true
#
class ConformBounceErrorCode < ActiveRecord::Migration[6.1]
def up
DB.exec(<<~SQL, regexp: '\d\.\d\.\d|\d\d\d')
UPDATE email_logs
SET bounce_error_code = (
SELECT array_to_string(
regexp_matches(bounce_error_code, :regexp),
''
)
) WHERE bounce_error_code IS NOT NULL;
SQL
end
def down
raise ActiveRecord::IrreversibleMigration
end
end