【发布时间】:2012-11-21 21:03:32
【问题描述】:
我想跟踪用户访问网站的次数。如果先前的访问时间超过 30 分钟,则访问计数器(用户模型的一部分)会增加。我正在使用 Rails 和设计:
class ApplicationController < ActionController::Base
before_filter :authenticate_user!
before_filter :update_visits
def update_visits
current_user.increment!(:visits) if !current_user.nil? && current_user.updated_at < 30.minutes.ago
end
end
这会很好用,除非我设计了 :rememberable 已打开。所以来自 :authenticate_user 的 SQL 调用序列!这是:
SELECT "users".* FROM "users" WHERE "users"."email" = 'person_1@example.com' LIMIT 1
UPDATE "users" SET "remember_created_at" = '2012-11-21 20:13:53.011322',“updated_at”='2012-11-21 20:13:53.012791' "用户"."id" = 1
因此,visits 变量永远不会增加,因为 updated_at 在可记忆调用中设置为当前时间。如何在身份验证之后但在可记住之前调用 update_visits?
谢谢
【问题讨论】:
标签: ruby-on-rails devise