簡體   English   中英

如何將追蹤添加到現有的Devise設置?

[英]How do I add trackable to an existing Devise setup?

我試圖使用Devise gem在RoR應用程序中獲取最后一次登錄日期時間。 在我的一個遷移文件中,我注意到了# t.datetime :last_sign_in_at字段等等:

## 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

所以問題是:如何為我的用戶激活此字段,以便稍后在我的應用程序中調用它? 我應該取消注釋嗎?

首先,您需要生成新的遷移:

rails generate migration AddDeviseTrackableColumnsToUsers \
sign_in_count:integer \
current_sign_in_at:datetime \
last_sign_in_at:datetime \
current_sign_in_ip:string \
last_sign_in_ip:string

然后替換:

add_column :users, :sign_in_count, :integer

有:

add_column :users, :sign_in_count, :integer, default: 0, null: false

現在,遷移文件如下所示:

class AddDeviseTrackableColumnsToUsers < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :sign_in_count, :integer, default: 0, null: false
    add_column :users, :current_sign_in_at, :datetime
    add_column :users, :last_sign_in_at, :datetime
    add_column :users, :current_sign_in_ip, :string
    add_column :users, :last_sign_in_ip, :string
  end
end

運行rails db:migrate

在用戶模型app / models / user.rb中 ,確保:trackable選項添加到devise方法:

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :registerable, :recoverable, :rememberable, :validatable, :confirmable,
  # :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :trackable
end

在您的情況下啟用的選項可能會有所不同,只需添加:trackable如果您沒有找到它。

現在您可以像其他屬性一樣使用last_sign_in_at屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM