Rails devise で複数モデルの認証機能を実装

2016/03/14

Rails devise で複数モデルを管理

概要

rails のログイン認証 Gem「devise」のインストール・設定方法を紹介します。
よく「device」とtypoしてる人を見かけますので、間違えないよう注意してください。

今回は、member/・admin/とモジュール分けし、それぞれの認証機能を設置しています。

gem インストール

Gemfile に以下を追加します。


gem 'devise'

bundle install 実行


$ bundle install

devise インストール


$ rails g devise:install

設定ファイルを変更
(/config/initializers/devise.rb)


config.scoped_views = true

devise 設定

user、adminモデルを追加


$ rails g devise user
$ rails g devise admin

それぞれ、member・admin配下にcontroller・viewを生成します。


$ rails g devise:controllers member/users
$ rails g devise:controllers admin/admins

$ rails g devise:views member/users
$ rails g devise:views admin/admins

ルートの設定

/config/routes.rb を設定


namespace :admin do
  devise_for :admins, controllers: {
    sessions:      'admins/sessions',
    passwords:     'admins/passwords',
   registrations: 'admins/registrations'
  }
end

namespace :member do
  devise_for :users, controllers: {
   sessions:      'users/sessions',
    passwords:     'users/passwords',
    registrations: 'users/registrations'
  }
end

後処理

不要なビューファイルが生成されているので削除


$ rails d devise:views

テーブルの生成


$ rake db:migrate
Related

Vagrant+Docker+PHP環境で「session.save_path」指定時に、セッションファイルが空になるエラー

ファイル共有でのフォルダの所有者を設定 結論 PHP5.4.28 からセッションファイルのownerはrootもしくはWebサーバのユーザに限るという制限が...

LINEと連携したテイクアウト事前注文システム徹底比較!

目次 テイクアウト予約・注文受付システムのトレンド LINEと連携したテイクアウト事前注文システムの価格表 L.B.B.Cloud テイクイーツ ...

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...
トップへ戻る