diff --git a/db/migrate/20110513175000_eliminate_stray_user_records.rb b/db/migrate/20110513175000_eliminate_stray_user_records.rb index 856d36ab7..7bd1ee00a 100644 --- a/db/migrate/20110513175000_eliminate_stray_user_records.rb +++ b/db/migrate/20110513175000_eliminate_stray_user_records.rb @@ -1,13 +1,13 @@ class EliminateStrayUserRecords < ActiveRecord::Migration def self.up - duplicated_emails = execute("SELECT LOWER(email) from users GROUP BY LOWER(email) HAVING COUNT(*) > 1").to_a + duplicated_emails = execute("SELECT LOWER(email) from users WHERE users.email != '' GROUP BY LOWER(email) HAVING COUNT(*) > 1").to_a duplicated_emails.each do |email| records = execute("SELECT users.id, users.username, users.created_at from users WHERE LOWER(users.email) = '#{email}'").to_a with_username = records.select { |r| !r[1].blank? } if with_username.length == 1 execute("DELETE FROM users WHERE LOWER(users.email) = '#{email}' AND users.username IS NULL") end - if with_username.length == 0 + if with_username.length == 0 && !email.blank? newest_record = records.sort_by{|r| r[2].to_i}.last execute("DELETE FROM users WHERE LOWER(users.email) = '#{email}' AND users.id != #{newest_record[0]}") end diff --git a/db/schema.rb b/db/schema.rb index 7a87f0dda..6170e86b9 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20110507212759) do +ActiveRecord::Schema.define(:version => 20110513175000) do create_table "aspect_memberships", :force => true do |t| t.integer "aspect_id", :null => false @@ -357,9 +357,11 @@ ActiveRecord::Schema.define(:version => 20110507212759) do t.string "language" t.string "email", :default => "", :null => false t.string "encrypted_password", :limit => 128, :default => "", :null => false - t.string "password_salt", :default => "", :null => false - t.string "invitation_token", :limit => 20 + t.string "invitation_token", :limit => 60 t.datetime "invitation_sent_at" + t.integer "invitation_limit" + t.integer "invited_by_id" + t.string "invited_by_type" t.string "reset_password_token" t.string "remember_token" t.datetime "remember_created_at"