如何在 Rails 中使用 ahoy 跟踪模型

问题描述 投票:0回答:1

我很好地整合了

ahoy
。但我的目的是跟踪任何模特展示页面的访问次数。

假设我有 2 个模型

CarModel
CarMake
我想要吸引像
CarModel.first.visits
CarMake.first.visits

这样的访问

但唯一找到的解决方案是点击

ahot.track("model"+car_model.id)
并将其保存在事件中,然后我需要通过字符串查询,这不是通用的方式。

我想通过

Model.visits
访问任何模特 这样
ahoy
支持吗?

ruby-on-rails ruby analytics tracking ahoy
1个回答
0
投票

这是为

Model.visits
实现
CarModel
的解决方案,对于任何其他模型也可以这样做。

创建迁移

rails g migration CreateCarModelVisits car_model:references visit:references

并将其与 Ahoy 访问表关联起来(注意 Ahoy 迁移)。

class CreateVisitable < ActiveRecord::Migration[6.1]
  def change
    create_table :visitables do |t|
      t.references :car_model, foreign_key: true
      t.references :visit, foreign_key: { to_table: :ahoy_visits }

      t.timestamps
    end
  end
end

关联模型

可以实现一对多关联,为了避免修改 Ahoy 表,我只是创建了一个多对多关系。

class CarModel < ApplicationRecord
  has_many :visitables, dependent: :destroy
  has_many :visits, through: :visitables, class_name: 'Ahoy::Visit'
 end

class Visitable < ApplicationRecord
  belongs_to :car_model
  belongs_to :visit, class_name: 'Ahoy::Visit'
end

class Ahoy::Visit < ApplicationRecord
  has_many :visitables, dependent: :destroy
  has_many :car_models, through: :visitables
end

跟踪模型访问情况

可以通过任何控制器/模型来完成

callback
。对于控制器回调:

CarModel.first.visits << current_visit

访问跟踪访问

CarModel.first.visits
© www.soinside.com 2019 - 2024. All rights reserved.