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