繁体   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