Rails用户“看不见的页面”计数器

时间:2013-04-17 14:32:00

标签: ruby-on-rails ruby devise counter

我有一个简单的rails应用程序,使用devise进行身份验证。我有兴趣为每个用户创建一个计数器,当他们访问某些页面时进行更新。

例如:

用户计数器= 4

用户访问第A页 用户计数器= 3

用户再次访问A页 用户计数器= 3

用户访问第B页 用户计数器= 2

我正在调查计数器缓存,它计算与用户关联的模型的实例数量,这有点在正确的路径上吗?任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

有一百万种方法可以给这只猫上皮.....但不过这是一次拍摄。

您需要创建一个将用户连接到页面的PageVisits连接模型,并且该模型上有您手动递增的计数器。

class User < ActiveRecord::Base
  has_many :page_visits
end

class Page < ActiveRecord::Base
  has_many :page_visits
end

class PageVisits < ActiveRecord::Base
  belongs_to :page
  belongs_to :user
end

class CampaignsController < ApplicationController
  def show
    @page = Page.find(params[:id]

    if current_user
      page_visit = @page.page_visits.where(user_id: current_user.id).first_or_create
      page_visit.increment(:visits)
    end

    respond_with(@page)
  end   
end

就像我说的,很多方面,这只是一种简单的方式。我个人使用redis来完成这项任务。