diff --git a/app/models/user.rb b/app/models/user.rb
index ade7b7a2a8ab8f3a41507204741d2ba6b565bdda..1e062b0c83d9f28d065a09410289e64f85c9b7ae 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -35,7 +35,7 @@ class User
 
   after_create :seed_aspects
 
-  before_validation_on_create :downcase_username
+  before_validation :downcase_username, :on => :create
 
    def self.find_for_authentication(conditions={})
     if conditions[:username] =~ /^([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})$/i # email regex
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index ad7070eaaf76fd30925e39d3ec2ce3c1953c8279..46327576a8d74b8a51bcaf1552775e18c76a15d6 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -6,7 +6,14 @@ require 'spec_helper'
 
 describe User do
   let(:user)   { Factory(:user) }
-  let(:aspect) { user.aspect(:name => 'heroes') }
+
+  describe "validations" do
+    it "downcases the username" do
+      user = Factory.build(:user, :username => "ALLUPPERCASE")
+      user.valid?
+      user.username.should == "alluppercase"
+    end
+  end
 
   describe '#diaspora_handle' do 
     it 'uses the pod config url to set the diaspora_handle' do
@@ -27,6 +34,7 @@ describe User do
   end
 
   context 'aspects' do
+    let(:aspect) { user.aspect(:name => 'heroes') }
     let(:user2)   { Factory(:user) }
     let(:aspect2) { user2.aspect(:name => 'stuff') }