ログイン認証に便利!Ruby on Railsのdeviseの使い方【初心者向け】

Railsで使えるgemの一つ「devise」の使い方を解説しています。Webサービスを開発する上で、ログイン認証が必要な場合は便利なGemになると思いますので、ぜひ使えるようにしておきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

RubyのフレームワークRailsで使えるgemの一つ「devise」の使い方を解説しています。

gemのインストールから実際の表示画面までの手順を説明していきます。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

大石ゆかり

田島メンター!!ユーザーがログインするときの画面などはどうやって作るんですか〜?

田島悠介

そういうときはdeviseというgemを使ってみよう。

大石ゆかり

deviseはどうやって導入するんですか?

田島悠介

まずはGemfileにdeviseを追記するところから始めるよ。最初から手順を見ていこう。

 

deviseとは

deviseはログイン認証機能を提供するgemでRuby on Railsでも使用することができます。

会員登録からログイン認証が必要なページの管理等が容易に行えるようになります。

また、オプションとして登録メールアドレスに本登録メールを送信しアクティベートする方法や、ユーザのBANなどの機能も備えています。

 

実際にdeviseを使ってみよう

deviseのインストール

まず、gemのインストールを行います。

Gemfileに下記記述を追記してbundle installを実行してdevise本体及び依存するgemのインストールを行います。

gem 'devise'

次に、下記コマンドを実行してdeviseの設定ファイルを生成します。

$ rails g devise:install

生成が完了するとdeviseのsetup方法について表示されます。

9dd75a9daf8140dd78edf274c424a662

簡単に解説します。

  1. 本登録メールに記載されるURLのホストの指定を行ってください。
  2.  routes.rbにてroot_urlを設定してください。devise内でいくつかroot_urlに遷移する場面があります。(例えば会員登録終了後など)
  3. エラーメッセージ用のタグをapplication.html.erbに追記してください。
  4. Herokuを使用していてRails3.2を使用している場合はapplication.rbに追記してください。
  5. もしDeviseのViewをカスタマイズしたい場合は、下記コマンドで生成してからカスタマイズしてください。

ログイン認証用のファイルを作成

下記コマンドを実行するだけでログイン認証に必要なファイルが生成されます。

$ rails generate devise User

Userの値は任意です。作成したいModel名で作成してください。

migrationファイルが生成されるのでmigrate実行後下記URLにアクセスすると会員登録画面ができています。

「http://localhost:3000/users/sign_up」

246ef38dd6aee636eeff42077a4e0ca4
 

大石ゆかり

あ!ログイン画面ができました!

田島悠介

次に、before_actionを使用した例を紹介しよう。ログインしていないユーザーに、ログイン画面に行ってもらうように設定するよ。

大石ゆかり

アクションの前に処理を入れるやつでしたっけ?やってみます!

 

ログイン認証を設定してみよう

home_controller.rbを作成してログイン認証が必要ないindexとログイン認証が必要なauthenticationというactionを作ってみましょう。

$ rails g controller home index authentication

home_controller.rbに認証用のbefore_actionを追記します。

fdf5896280c662f4615786af598223ff

「:authenticate_user!」と記載がありますがuserの部分は作成したModel名に応じて適宜変更してください。Userの場合の例になります。

ログインしていない状態で下記URLにアクセスしてみましょう。

「http://localhost:3000/home/index」

f01d961091318ca2167a54e3f2b45ffc

アクセスに成功しました。

「http://localhost:3000/home/authentication」

3713a8de2baf8f33ade4ee6cc01aaded

ログイン画面に遷移させることができました。

 

簡単にではありますが、deviseについて解説しました。

Webサービスを開発する上で、ログイン認証が必要な場合は便利なGemになると思いますので、ぜひ使えるようにしておきましょう。

 

田島悠介

before_actionは、このように認証に使われることが多いね。

大石ゆかり

確かにこういうときに便利ですね。

田島悠介

ログイン処理というのもWebアプリケーションの基本的な機能になるね。このgemもぜひ活用しよう。

大石ゆかり

はい!分かりました!

 

[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。