我正在尝试出于统计目的跟踪用户登录历史记录,但我不清楚最好的方法是什么。我可以有一个单独的表来记录用户和他们的登录统计信息,但该表可能会变得非常大。我可以在可解析字段中跟踪用户模型/对象本身中的一些历史字段,并使用一些分隔字符串格式对其进行更新(它们)。例如拆分:,获取最后一个,如果包含的日期代码不是今天,则添加一个项目(日期+计数),否则递增,然后将其保存回来。至少使用第二种方法很容易删除旧项目(例如,只保留 30 天的每日登录或 IP),因为单独的表需要删除旧记录的任务。
我是即时变化的忠实粉丝。任务很有用,但出于维护原因可能会使事情复杂化。
有人有什么建议吗?我还没有外部数据缓存解决方案或任何东西。也欢迎任何指点! (我一直在寻找类似的问题和答案)
谢谢!
请您参考如下方法:
如果你有 :trackable 模块,我发现这是最简单的方法。在用户模型中(或您正在验证的任何模型)
def update_tracked_fields!(request)
old_signin = self.last_sign_in_at
super
if self.last_sign_in_at != old_signin
Audit.create :user => self, :action => "login", :ip => self.last_sign_in_ip
end
end
(灵感来自 https://github.com/plataformatec/devise/wiki/How-To:-Turn-off-trackable-for-admin-users )




