Railsでユーザー認証機能を実装しよう~定番のgem「devise」活用法(2)
これだけは押さえておきたい!Rails開発で使えるgemパッケージ/ツール 第2回
ダウンロード サンプルファイル (113.6 KB)
前回、Railsアプリ開発におけるRubyGemsの役割を確認するとともに、deviseにおける基本的な機能の概要を理解し、実際にdeviseが提供するコマンドを使用してdeviseの導入を開始しました。今回は、deviseを用いることで、Railsチュートリアルなどの実装と異なり、ほとんどプロダクトのコードを記述することなくユーザー認証機能を追加できることを体験していきます。
Userモデルを自動生成する
前回、rails g devise:installコマンド実行時に提示された手順に従って、ビューファイルの生成をrails g devise:viewコマンドで行いました。
次に、データベースにユーザー情報を格納するDatabase Authenticatableモジュールの機能を使うために、さらにユーザー情報を格納するUserモデルをビュー同様にdeviseが提供するgenerateコマンドで作成します。
bin/rails g devise User
Running via Spring preloader in process 21678
invoke active_record
create db/migrate/20180321101835_devise_create_users.rb
create app/models/user.rb
invoke test_unit
create test/models/user_test.rb
create test/fixtures/users.yml
insert app/models/user.rb
route devise_for :users
なお、ユーザー情報を格納するモデルクラス名はUser以外を指定することも可能です。例えばMemberを指定すると、作成されるモデルクラスはapp/models/member.rbとなります。
実行結果から、モデルに対応するusersテーブルを作成するマイグレーションファイルや自動テスト用のファイルが生成されていることが分かります。まず、自動生成されたUserモデルを確認します。
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
deviseというDSLの後、deviseが提供するモジュールが指定されています。前回の表の通り、デフォルトで有効となっているのは:database_authenticatableなど6つです。デフォルトでは無効となっている:confirmableなどを有効にする場合は、deviseのDSLの後に追加で指定します。ここではデフォルト設定のままで進めます。
マイグレーションの実行
続いて、マイグレーションファイルを確認しましょう。
| モジュール | フィールド名 | データ型 | 意味 |
|---|---|---|---|
| Database authenticatable | string | ユーザー登録時のメールアドレス | |
| Database authenticatable | encrypted_password | string | 暗号化されたパスワード |
| Recoverable | reset_password_token | string | パスワードリセット時のトークン |
| Recoverable | reset_password_sent_at | datetime | パスワードリセットメール送信日時 |
| Rememberable | remember_created_at | datetime | [Remember me]チェックボックスをON |
| Trackable | sign_in_count | integer | ログインした回数 |
| Trackable | current_sign_in_at | datetime | 直近でログインした日時 |
| Trackable | current_sign_in_ip | inet | 直近でログインした接続元IP |
| Trackable | last_sign_in_at inet | inet | 前回ログインした接続元IP |
モジュールごとに使うカラムが定義されています。こちらもデフォルトで有効となっているモジュールで使うカラムのみ、コメントアウトが外されています。無効となっている機能を有効にする場合は、該当モジュールのコメントアウトを外してマイグレーションを実行します。ここではデフォルトのままで進めます。
以下のコマンドでマイグレーションを実行します。データベースを作成していない場合は先にデータベースを作成してください。
bin/rails g db:create # DB未作成なら実行 bin/rails g db:migrate
この記事は参考になりましたか?
- これだけは押さえておきたい! Rails開発で使えるgemパッケージ/ツール連載記事一覧
- この記事の著者
-
WINGSプロジェクト 竹馬 力(チクバ ツトム)
< WINGSプロジェクト について> 有限会社 WINGSプロジェクト が運営する、テクニカル執筆コミュニティ(代表 ...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
