- メールアドレスが確定しない状況(変更可能な状況)
- そもそも持っていない可能性もある状況
- 将来的に外部認証と組み合わせる時にメールアドレスを強制できない状況
今の時代は恵まれているので、しっかり誰かが道を作ってくれています。
http://ja.asciicasts.com/episodes/210-customizing-devise
http://d.hatena.ne.jp/kaorumori/20110824/1314168534
config/initializers/devise.rb にて
config.authentication_keys = [ :username ]元々の設定値は :email になっています。
さらに、app/views/devise/session/new.html.erb および app/views/devise/registrations/new.html.erb にて、:username 用の text_field を追加します。
この辺り(テキストフィールド欄の追加)は見よう見まねで何とかなったのですが…。
上記の2つの記事では「既に存在しているユーザのフィールド(username)の値を認証に使う」というものでしたが、username の値を登録したいと思って regisrations/new.html.erb に単純にテキストフィールドを追加したらハマりました。
コンソールログをきちんと読め、という話なのですが、
WARNING: Can't mass-assign protected attributes: usernameというログが出てきます。
app/models/user.rb で、attr_accessible に :username を追加してあげる必要があったようです。
こんな記事を見つけました。
http://trwtnb.blogspot.com/2009/11/rubyrails-warning-cant-mass-assign.html
おまけ
email フィールドに unique 制約があるので(適当なメールアドレスをでっち上げればいいだけなんですが…)、user テーブルを何度も作り直しました。ってことで、 rake db:migrate:reset をおぼえた!
0 件のコメント:
コメントを投稿