restful_authenticationその2
初期データのmigrateでの投入
初期ユーザー(admin等)を入れておく必要がある場合はmigrateに記述します。
User.create!( :login=>"admin",:email=>"admin", :password=>"master",:password_confirmation =>"master" )
普通にActiveRecord::createのつもりで使ったらうまくいかなくて悩みました(汗。
アクティベーションユーザー登録時のログイン状態
実際に初期状態のまま使ってみると、登録後に自動的にログイン状態になってしまいます。アクティベーションを必須とした場合にはこれでは意味が無いので、ログイン状態に遷移しないようにします。
UsersController::createの
self.current_user = @user
をコメントにします。
でも、運用を考えてみたところ、管理者だけが新規ユーザーを登録する場合はこの動作だとユーザーのアクティベーション前に動作チェックができていいような気もします。
ユーザーIDとemailを同一にする
ユーザーIDを任意にふっても、みんな考えるのがめんどくさいとか言われてしまうので、メールアドレスがユーザーIDになるほうが、覚えやすくていいと思います。方法はmodel側をいじる方法も考えたのですが、create時にコピーしてしまうのが簡単かなっと(メールアドレス変更時にID変更を忘れないようにすること!)。
class UsersController < ApplicationController ... def create ... @user = User.new(params[:user]) @user.login = @user.email @user.save ... end .. end
validatesの部分でloginとemailの長さが違うので統一しておく必要があります。
validates_length_of :login, :within => 3..40 validates_length_of :email, :within => 3..100