0

我想知道,我怎样才能在 Rails 中获得这样的统计数据?

  1. 像 /page/1、/page/2 这样的页面有多少独特的浏览量
  2. 他们来自哪些国家?

因为我想在这些页面下显示此信息,所以我不想使用任何外部库,我希望我们可以拥有一些可以做到这一点的 ruby​​ gem

谢谢

编辑 1 - 我可以看到像https://github.com/jkrall/analytical这样的 1-2 个宝石,但仍然想问问 SO 社区

编辑 2 - 我不认为上面的 gem 是我正在寻找的它看起来只是将 3rd 方分析插入现有应用程序

4

1 回答 1

6

Geocoder gem 添加到您的 Gemfile 和bundle install.

创建Visit具有属性pageip_address的模型location

对于有问题的页面,在相关控制器中放置一个前置过滤器,或者如果您想记录对每个页面的访问,请将其放置在您的 ApplicationController 中:

def record_visit
  Visit.create(page: request.fullpath, ip_address: request.ip, location: request.location.country_code)
end

Geocoder gem 将该location方法添加到请求对象中,因此如果您需要的不仅仅是国家/地区代码,请阅读文档。

然后,您可以通过将以下内容插入控制器来显示特定页面上的视图数量,再次在 before_filter 中,但这必须在前一个过滤器之后运行:

def count_views
  @views = Visit.where(page: request.fullpath).count
end

由于您将经常运行此查询,因此您可能希望在创建访问模型时在页面属性上放置一个索引。

add_index :visits, :page

唯一视图很棘手,因为您当然可以有来自同一 IP 地址的多个访问者。您可以将 cookie 设置为record_visit方法的一部分,然后如果 cookie 存在,则不创建新访问。

def record_visit
  if cookies['app-name-visited']
    return
  else
    cookies['app-name-visited'] = true
    Visit.create(page: request.fullpath, ip_address: request.ip, location: request.location.country_code)
  end
end
于 2013-03-02T12:28:00.180 回答