ruby-on-rails-3 - 使用 Rails 3 中的 Devise 显示上次登录的详细信息

标签 ruby-on-rails-3 authentication devise

我有一个 Rails 3 应用程序,它使用 Devise 进行身份验证。

我想在用户管理表中显示每个用户上次登录的日期和时间。

我的应用程序基于以下应用程序:

https://github.com/dannymcc/rails3-base

我已阅读 Devise GitHub wiki,并注意到它提到用户事件是可跟踪的,但我找不到有关访问信息等的任何信息。

任何帮助/建议将不胜感激!

谢谢

丹尼

最佳答案

Devise文档概述了可跟踪模块,它将执行您想要的操作。在您的用户模型中,包含 :trackable 模块,如下所示:

  devise :database_authenticatable, 
      ...
      :trackable

并确保您的数据库具有正确的字段。如果您已经有一个用户表,则不确定如何执行此操作,但添加具有正确名称和类型的字段应该可以解决问题。我创建用户表的迁移如下所示:

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string :name
      t.string :email

      t.database_authenticatable :null => false
      t.recoverable
      t.rememberable
      t.trackable

      t.timestamps
    end
  end

  def self.down
    drop_table :users
  end
end

t.trackable 将添加正确的字段。在我的用户模型中,它们如下:

sign_in_count: integer, 
current_sign_in_at: timestamp, 
last_sign_in_at: timestamp, 
current_sign_in_ip: string, 
last_sign_in_ip: string

然后您只需执行 user.last_sign_in_at 并检查 strftime有关如何以所需格式输出时间的文档。

关于ruby-on-rails-3 - 使用 Rails 3 中的 Devise 显示上次登录的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5091169/

相关文章:

ruby-on-rails - 为 Devise 可验证添加额外的验证

ruby-on-rails - 无法批量分配 protected 属性以使用设计创建 has_many 嵌套模型

mysql - MySql 和 Rails 中的时区

authentication - dropwizard 中不同资源的多个身份验证器

c# - 从 MVC Controller 验证 SignalR

ruby-on-rails-3 - CarrierWave 多文件类型验证与单个 uploader

ruby-on-rails - 自动重新加载 config/locales 中的 rails yml 文件

php - 如何阻止 bcrypt salt 每次更改登录密码

ruby-on-rails - 未定义的方法 `session_path'