17
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsのdeviseを使って複数のユーザー別でログインする方法

Posted at

はじめに

こんにちは!
本日はRailsのdeviseというGemを使って、ユーザー別にログイン画面を分けて実装する方法をご紹介いたします^^

ここでは生成するユーザーとして、PostWriter(記事書く人)とPostReader(記事読む人)を作っていきたいと思います!

前提条件として、Railsの環境構築、deviseのインストール・設定(rails g devise:installコマンドなど)は終わっているものとします。

Modelを生成する

Modelをコマンドラインから実行していきます!
ちなみにgはgenerateの略になります。略語でも実行できるのとてもありがたいですね^^

PostWriterモデルを作成するにはこちらのコマンド
$ rails g devise PostWriter

PostReaderモデルを作成するにはこちらのコマンド
$ rails g devise PostReader

こちらはよく使用するコマンドであるrails g model モデル名とよく似ていると思います。その要領で大丈夫です。モデルを作成したので、rails db:migrateを忘れずに!

Controllerを生成する

続けてControllerを生成していきます!

PostWriterコントローラーを生成するにはこちらのコマンド
$ rails g devise:controllers post_writers

PostReaderコントローラーを生成するにはこちらのコマンド
rails g devise:controllers post_readers

ここではコマンド内で、controllerではなく、controllerssがついていることに気をつけてください^^

設定ファイルを変更する

下記のコードがデフォルトだとコメントアウトされていると思いますので、こちらのコメントアウトを外します。
この行はdeviseのViewをカスタマイズするために設定するものとなります。設定ファイルを変更した際は、rails sなどサーバーの再起動を忘れずに!

config.scoped_views = true

Viewを生成する

PostWriterビューを生成するにはこちらのコマンド
rails g devise:views post_writers

PostReaderビューを生成するにはこちらのコマンド
rails g devise:views post_readers

ルーティングを設定する

# config/routes.rb

Rails.application.routes.draw do
  devise_for :post_readers, controllers: {
    sessions: 'post_readers/sessions',
    passwords: 'post_readers/passwords',
    registrations: 'post_readers/registrations'
  }

  devise_for :post_writers, controllers: {
    sessions: 'post_writers/sessions',
    passwords: 'post_writers/passwords',
    registrations: 'post_writers/registrations'
  }
end

それぞれのログイン画面を表示してみる

まずPostWriter(記事書く人)のログイン画面を表示してみましょう。(localhost:3000の部分はそれぞれの環境によって変えてください。)
URL:http://localhost:3000/post_writers/sign_in

次にPostReader(記事読む人)のログイン画面を表示してみましょう。
URL:http://localhost:3000/post_readers/sign_in

↓↓↓サンプル画像↓↓↓
rails_login.png

エラーが出た場合は、
・サーバーは起動しているか → rails s
・モデルを作成したのでmigrateする → rails db:migrate
・ルートが間違っているかも? → rails routes

終わりに

以上がRailsのdeviseを使って複数のユーザー別でログインする方法でした。
プログラミングを勉強し始めて思ったのは、やはり知っていることが多いほど特をする。。
他の業界でも同じだと思いますが、この業界でも同様ですね^^
一つ知っているだけでコーディングのスピード感が全然違ってきます。それが積み重なっていった方が激強エンジニアや、つよつよエンジニアと呼ばれるのかもしれません笑
はじめ私はrails routesコマンドを知らず、エラー画面とひたすら向き合っていました。。。

17
26
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?