diff options
author | Azul <azul@leap.se> | 2014-05-29 10:04:07 +0200 |
---|---|---|
committer | Azul <azul@leap.se> | 2014-05-29 10:04:07 +0200 |
commit | e0d31118d6e4110d2c280afa9415cfe9def29deb (patch) | |
tree | ffa589ee7df174d0eaa20cec254a7251f425f402 | |
parent | 016e61ce9ab44cf58355e843b0c0d0085d373fc7 (diff) |
hand on errors from Email to Identity to User
errors.each iterates through all errors for all attrbibutes nicely.
-rw-r--r-- | app/models/identity.rb | 10 | ||||
-rw-r--r-- | app/models/user.rb | 6 | ||||
-rw-r--r-- | test/unit/identity_test.rb | 1 |
3 files changed, 10 insertions, 7 deletions
diff --git a/app/models/identity.rb b/app/models/identity.rb index 25be971..f2727c8 100644 --- a/app/models/identity.rb +++ b/app/models/identity.rb @@ -141,15 +141,17 @@ class Identity < CouchRest::Model::Base def address_local_email return if address.valid? #this ensures it is a valid local email address - # we only hand on the first error for now. - self.errors.add(:address, address.errors.messages.values.first) + address.errors.each do |attribute, error| + self.errors.add(:address, error) + end end def destination_email return if destination.nil? # this identity is disabled return if destination.valid? # this ensures it is Email - # we only hand on the first error for now. - self.errors.add(:destination, destination.errors.messages.values.first) + destination.errors.each do |attribute, error| + self.errors.add(:destination, error) + end end end diff --git a/app/models/user.rb b/app/models/user.rb index 33508b5..84a795e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -167,10 +167,10 @@ class User < CouchRest::Model::Base ## def identity_is_valid - refresh_identity return if identity.valid? - # hand on the first error only for now - self.errors.add(:login, identity.errors.messages.values.first) + identity.errors.each do |attribute, error| + self.errors.add(:login, error) + end end def password diff --git a/test/unit/identity_test.rb b/test/unit/identity_test.rb index 9c938f8..54c0657 100644 --- a/test/unit/identity_test.rb +++ b/test/unit/identity_test.rb @@ -107,6 +107,7 @@ class IdentityTest < ActiveSupport::TestCase other_user = find_record :user taken = Identity.build_for other_user, address: id.address assert !taken.valid? + assert_equal ["has already been taken"], taken.errors[:address] Identity.destroy_all_disabled end |