【问题标题】:How do I add trackable to an existing Devise setup?如何将 trackable 添加到现有的设计设置?
【发布时间】:2018-10-27 16:53:45
【问题描述】:

我正在尝试使用 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

所以问题是:如何为我的用户激活此字段以便稍后在我的应用程序中调用它?我应该取消注释吗?

【问题讨论】:

    标签: ruby-on-rails ruby devise ruby-on-rails-5


    【解决方案1】:

    首先,您需要生成一个新的迁移:

    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 属性。

    【讨论】:

      猜你喜欢
      • 2018-04-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 2013-03-29
      • 1970-01-01
      相关资源
      最近更新 更多