今回は、アカウント管理を行える「devise」を使って、「管理者」と「会員」を作成する方法をまとめてみました。
分かりやすくするため、「管理者(admin)」「会員(customer)」という名前で作成してみます。
「devise」のインストール
まず、「devise」を「Gemfile」に追加して、インストールします。
gem 'devise'bundle installインストールコマンドとconfigファイルの修正
以下のコマンドを実行します。
$ rails g devise:install「/config/initializers/devise.rb」の中を見ると、
コメント行になっている「#config.scoped_views = false」という部分があるので、コメントを外して「true」に変更します。
# config.scoped_views = false
# 元々の状態config.scoped_views = true
# これでオッケー!変更できれば次に進みます。
「adminモデル」と「customerモデル」を作成
モデルを作成します。
$ rails g devise admin
$ rails g devise customer※作成したら、必ずすぐに「マイグレーション」をしましょう!
マイグレーションを忘れると、一通りの作業が終わった後に正常に動作しないことがあります。
私はこれで一度ハマりました…。笑
rails db:migrateこれでOKですね。
万が一、ミスったときの対処法はこちらをみてください!

「adminsコントローラ」と「customersコントローラ」を作成
続いて、コントローラも作成します。
コマンドは以下の通り。
$ rails g devise:controllers admins
$ rails g devise:controllers customers「View」の作成
deviseのビューを作成します。
コマンドは以下の通りです。
$ rails g devise:views admins
$ rails g devise:views customers「Routing」の作成
ルーティングを書いていきます。
現状のルーティングを確認すると以下のようになっています。
devise_for :users
devise_for :admins一見、問題なさそうですが、「rails routes」してみると、、、
                   Prefix Verb   URI Pattern                       Controller#Action
                                :
cancel_admin_registration GET    /admins/cancel(.:format)          devise/registrations#cancel
       admin_registration POST   /admins(.:format)                 devise/registrations#create
   new_admin_registration GET    /admins/sign_up(.:format)         devise/registrations#new
  edit_admin_registration GET    /admins/edit(.:format)            devise/registrations#edit
                                :
                                :
 cancel_user_registration GET    /customers/cancel(.:format)       devise/registrations#cancel
        user_registration POST   /customers(.:format)              devise/registrations#create
    new_user_registration GET    /customers/sign_up(.:format)      devise/registrations#new
   edit_user_registration GET    /customers/edit(.:format)         devise/registrations#edit
                                :
                                :一番右の「Controller#Action」の項目が丸かぶりなのが分かります。
これではまずいので、「routes.rb」を書き換えて…
devise_for :admins, controllers: {
  sessions:      'admins/sessions',
  passwords:     'admins/passwords',
  registrations: 'admins/registrations'
}
devise_for :customers, controllers: {
  sessions:      'customers/sessions',
  passwords:     'customers/passwords',
  registrations: 'customers/registrations'
}これでOKですね。
もう一度、「rails routes」してみると…。
                   Prefix Verb   URI Pattern                       Controller#Action
                                :
cancel_admin_registration GET    /admins/cancel(.:format)          admins/registrations#cancel
       admin_registration POST   /admins(.:format)                 admins/registrations#create
   new_admin_registration GET    /admins/sign_up(.:format)         admins/registrations#new
  edit_admin_registration GET    /admins/edit(.:format)            admins/registrations#edit
                                :
                                :
 cancel_user_registration GET    /customers/cancel(.:format)       customers/registrations#cancel
        user_registration POST   /customers(.:format)              customers/registrations#create
    new_user_registration GET    /customers/sign_up(.:format)      customers/registrations#new
   edit_user_registration GET    /customers/edit(.:format)         customers/registrations#edit
                                :
                                :ちゃんとadminsとcustomersに分けることができました!
最後の処理
先にできてしまっていた、デフォルトのビューを削除します。
(新規に作った方は作業不要?だと思いますが、念のため!)
$ rails d devise:viewsこれで完了です!
全ての作業を完了することができました!

 
			