[英]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.