validates_presence_of :email, :display_name
validates_confirmation_of :email#, :message => ' addresses must match'
validates_confirmation_of :pass_crypt#, :message => ' must match the confirmation password'
- validates_uniqueness_of :display_name, :allow_nil => true
- validates_uniqueness_of :email
+ validates_uniqueness_of :display_name, :allow_nil => true, :case_sensitive => false, :if => Proc.new { |u| u.display_name_changed? }
+ validates_uniqueness_of :email, :case_sensitive => false, :if => Proc.new { |u| u.email_changed? }
validates_uniqueness_of :openid_url, :allow_nil => true
validates_length_of :pass_crypt, :within => 8..255
validates_length_of :display_name, :within => 3..255, :allow_nil => true
--- /dev/null
+require 'lib/migrate'
+
+class AddLowercaseUserIndexes < ActiveRecord::Migration
+ def up
+ add_index :users, :display_name, :lowercase => true, :name => "users_display_name_lower_idx"
+ add_index :users, :email, :lowercase => true, :name => "users_email_lower_idx"
+ end
+
+ def down
+ remove_index :users, :name => "users_email_lower_idx"
+ remove_index :users, :name => "users_display_name_lower_idx"
+ end
+end
else
index_type = options
end
- quoted_column_names = column_names.map { |e| quote_column_name(e) }.join(", ")
+
+ quoted_column_names = column_names.map { |e| quote_column_name(e) }
+ if Hash === options and options[:lowercase]
+ quoted_column_names = quoted_column_names.map { |e| "LOWER(#{e})" }
+ end
+ quoted_column_names = quoted_column_names.join(", ")
+
execute "CREATE #{index_type} INDEX #{quote_column_name(index_name)} ON #{quote_table_name(table_name)} USING #{index_method} (#{quoted_column_names})"
end
end