diff options
author | Semyon Pupkov <semen.pupkov@gmail.com> | 2016-05-23 12:19:27 +0300 |
---|---|---|
committer | Semyon Pupkov <mail@semyonpupkov.com> | 2016-10-23 15:30:07 +0300 |
commit | b1ce2eb1e5f6a4a5b413381489fbb7e63ff3e1e5 (patch) | |
tree | e534764412d32517b1e7e06e86b0516025472311 | |
parent | a98ad03ba18da0b1534f36dafafa9a1c644d0bf1 (diff) |
refactor(email): use setter method instead AR callbacks
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | app/models/email.rb | 6 | ||||
-rw-r--r-- | spec/models/email_spec.rb | 5 |
3 files changed, 8 insertions, 4 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index b25431278bd..6b8ecb68c8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ Please view this file on the master branch, on stable branches it's out of date. - Use MergeRequestsClosingIssues cache data on Issue#closed_by_merge_requests method - Fix documents and comments on Build API `scope` + - Refactor email, use setter method instead AR callbacks for email attribute (Semyon Pupkov) ## 8.13.1 (unreleased) - Fix error in generating labels diff --git a/app/models/email.rb b/app/models/email.rb index 32a412ab878..826d4f16edb 100644 --- a/app/models/email.rb +++ b/app/models/email.rb @@ -7,10 +7,8 @@ class Email < ActiveRecord::Base validates :email, presence: true, uniqueness: true, email: true validate :unique_email, if: ->(email) { email.email_changed? } - before_validation :cleanup_email - - def cleanup_email - self.email = self.email.downcase.strip + def email=(value) + write_attribute(:email, value.downcase.strip) end def unique_email diff --git a/spec/models/email_spec.rb b/spec/models/email_spec.rb index d9df9e0f907..fe4de1b2afb 100644 --- a/spec/models/email_spec.rb +++ b/spec/models/email_spec.rb @@ -6,4 +6,9 @@ describe Email, models: true do subject { build(:email) } end end + + it 'normalize email value' do + expect(described_class.new(email: ' inFO@exAMPLe.com ').email) + .to eq 'info@example.com' + end end |