3

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

例如:

用户计数器 = 4

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

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

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

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

4

1 回答 1

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 来完成这类任务。

于 2013-04-17T20:27:09.387 回答