べるべる研究日誌

なんでもやる系エンジニアの日々

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