概要
Rails6 と 認証用の gem である Devise を使ったログイン時刻の記録方法を書き留めています。
使用したバージョン:
Rails 6.0.2.2
Devise 4.7.1
プロジェクトの作成
まずは適当な名前で Rails プロジェクトを作成します。
rails new myproject
cd myproject
Devise のセットアップ
次に Devise の設定を行なっていきます。
Gemfile を開いて以下を追記し、bundle install
を実行してください。
# ...略
gem 'devise'
インストールが終わったら User モデルを作成します。
bin/rails g devise:install
bin/rails g devise user
User モデルの編集
ログイン時刻を記録する機能はデフォルトでは有効になっていません。
有効にするために先ほどの手順で生成された User モデルやマイグレーションファイルを編集していきます。
まずは User モデルのファイルを開き、devise
メソッドの引数に :trackable
を追加します。
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable, :trackable
end
さらに、マイグレーションファイル XXX_devise_create_users.rb
を開きます。
15 行目くらいにあるコメントアウトを外します。
class DeviseCreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :users do |t|
# ...略
## Trackable
t.integer :sign_in_count, default: 0, null: false
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.string :current_sign_in_ip
t.string :last_sign_in_ip
# ...略
end
end
end
すべて終われば、bin/rails db:migrate
で完了です。