ユーザーがサイトにアクセスした回数を追跡したいと考えています。以前の訪問が 30 分以上前の場合、訪問カウンター (ユーザー モデルの一部) が増加します。私はRailsとDeviseを使用しています:
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
devise :rememberable をオンにしている場合を除いて、これはうまく機能します。したがって、:authenticate_user! からの一連の SQL 呼び出しは次のようになります。これは:
SELECT "users".* FROM "users" WHERE "users"."email" = 'person_1@example.com' LIMIT 1
UPDATE "ユーザー" SET "remember_created_at" = '2012-11-21 20:13:53.011322', "updated_at" = '2012-11-21 20:13:53.012791' WHERE "ユーザー"."id" = 1
したがって、updated_at が記憶可能な呼び出しで現在の時刻に設定されているため、visits 変数がインクリメントされることはありません。認証後、記憶可能になる前に update_visits 呼び出しを行うにはどうすればよいですか?
ありがとうございました