怖話でAndyというユーザー名で登録しようとするとエラー。
Mysql2::Error - Duplicate entry 'Andy' for key 'index_users_on_name'
多分小文字のandyとぶつかってるんだろうな。
validates :name, uniqueness: true
してるのに何故だろう。mysqlのcollationが変なのになってるのかなと確認してみるも問題無し。
uniquenessを確認している部分のSQLクエリをみてみると・・・
SELECT 1 AS one FROM `users` WHERE `users`.`name` = BINARY 'Andy' LIMIT 1
BINARY・・・だと・・・!?
deviseの設定でcase_insensitive_keysを設定しないとBINARYで確認しにいくようです。
# config/initializers/devise.rb:
config.case_insensitive_keys = [ :email, :name ]
ここにnameも追加してOK。configのコメントぐらいちゃんと読んどけってことですな。