使用Devise in Rails 3显示上次登录的详细信息

时间:2011-02-23 12:52:04

标签: ruby-on-rails-3 authentication devise

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

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

我已将该应用程序基于以下应用程序:

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

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

非常感谢任何帮助/建议!

谢谢,

丹尼

2 个答案:

答案 0 :(得分:11)

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文档,了解如何以您想要的格式输出时间。

答案 1 :(得分:0)

而不是user.last_sign_in_at使用current_user.sign_in_at,而不是最后登录用户登录的详细信息。