Only check some user validations when the field has changed
authorTom Hughes <tom@compton.nu>
Mon, 6 Jun 2011 23:22:23 +0000 (00:22 +0100)
committerTom Hughes <tom@compton.nu>
Mon, 6 Jun 2011 23:22:23 +0000 (00:22 +0100)
app/models/user.rb

index d2535bb..a817c0f 100644 (file)
@@ -25,11 +25,11 @@ class User < ActiveRecord::Base
   validates_uniqueness_of :email
   validates_length_of :pass_crypt, :within => 8..255
   validates_length_of :display_name, :within => 3..255, :allow_nil => true
-  validates_email_format_of :email
-  validates_email_format_of :new_email, :allow_blank => true
-  validates_format_of :display_name, :with => /^[^\/;.,?]*$/
-  validates_format_of :display_name, :with => /^\S/, :message => "has leading whitespace"
-  validates_format_of :display_name, :with => /\S$/, :message => "has trailing whitespace"
+  validates_email_format_of :email, :if => Proc.new { |u| u.email_changed? }
+  validates_email_format_of :new_email, :allow_blank => true, :if => Proc.new { |u| u.new_email_changed? }
+  validates_format_of :display_name, :with => /^[^\/;.,?]*$/, :if => Proc.new { |u| u.display_name_changed? }
+  validates_format_of :display_name, :with => /^\S/, :message => "has leading whitespace", :if => Proc.new { |u| u.display_name_changed? }
+  validates_format_of :display_name, :with => /\S$/, :message => "has trailing whitespace", :if => Proc.new { |u| u.display_name_changed? }
   validates_numericality_of :home_lat, :allow_nil => true
   validates_numericality_of :home_lon, :allow_nil => true
   validates_numericality_of :home_zoom, :only_integer => true, :allow_nil => true