From a8ec73a0307924610023525786bb3a9eb8b173e1 Mon Sep 17 00:00:00 2001 From: Azul Date: Thu, 17 Jan 2013 15:09:58 +0100 Subject: unit tests passing --- users/app/models/user.rb | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'users/app/models/user.rb') diff --git a/users/app/models/user.rb b/users/app/models/user.rb index 40e285a..f89d01c 100644 --- a/users/app/models/user.rb +++ b/users/app/models/user.rb @@ -20,7 +20,7 @@ class User < CouchRest::Model::Base :format => { :with => /\A[A-Za-z\d_\.]+\z/, :message => "Only letters, digits, . and _ allowed" } - validate :login_differs_from_email_aliases + validate :login_is_unique_alias validates :password_salt, :password_verifier, :format => { :with => /\A[\dA-Fa-f]+\z/, :message => "Only hex numbers allowed" } @@ -38,7 +38,6 @@ class User < CouchRest::Model::Base load_views(Rails.root.join('users', 'app', 'designs', 'user')) view :by_login view :by_created_at - view :by_email end class << self @@ -93,11 +92,13 @@ class User < CouchRest::Model::Base # Validation Functions ## - def login_differs_from_email_aliases - # If this has not changed but the email aliases let's not mark this invalid. - return if email_aliases.any? and email_aliases.last.errors.any? - if email_aliases.map(&:email).include?(email_address) - errors.add(:login, "may not be the same as an alias") + def login_is_unique_alias + has_alias = User.find_by_login_or_alias(username) + return if has_alias.nil? + if has_alias != self + errors.add(:login, "has already been taken") + elsif has_alias.login != self.login + errors.add(:login, "may not be the same as one of your aliases") end end -- cgit v1.2.3