]> source.dussan.org Git - redmine.git/commitdiff
Replace custom email normalization logic with Rails' `normalizes` method (#29208).
authorGo MAEDA <maeda@farend.jp>
Fri, 20 Sep 2024 01:58:08 +0000 (01:58 +0000)
committerGo MAEDA <maeda@farend.jp>
Fri, 20 Sep 2024 01:58:08 +0000 (01:58 +0000)
git-svn-id: https://svn.redmine.org/redmine/trunk@23064 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/email_address.rb

index 8b9ecd415b86f0f74ca9d22b35a78a2467b6ad8e..69ae8a066e5e519366b06cb96c00bdf2a04bb6cf 100644 (file)
@@ -36,21 +36,19 @@ class EmailAddress < ApplicationRecord
     :if => Proc.new {|email| email.address_changed? && email.address.present?}
   validate :validate_email_domain, :if => proc {|email| email.address.present?}
 
-  safe_attributes 'address'
-
-  def address=(arg)
-    normalized_address = arg.to_s.strip
-
-    # Convert internationalized domain name (IDN) to Punycode
-    # e.g. 'marie@société.example' => 'marie@xn--socit-esab.example'
+  normalizes :address, with: lambda { |address|
+    normalized_address = address.to_s.strip
     local_part, _at, domain = normalized_address.partition('@')
     if domain.present?
+      # Convert internationalized domain name (IDN) to Punycode
+      # e.g. 'marie@société.example' => 'marie@xn--socit-esab.example'
       ascii_domain = Addressable::IDNA.to_ascii(domain)
       normalized_address = "#{local_part}@#{ascii_domain}"
     end
+    normalized_address
+  }
 
-    write_attribute(:address, normalized_address)
-  end
+  safe_attributes 'address'
 
   def destroy
     if is_default?