我很好地整合了
ahoy
。但我的目的是跟踪任何模特展示页面的访问次数。
假设我有 2 个模型
CarModel
和 CarMake
我想要吸引像 CarModel.first.visits
和 CarMake.first.visits
这样的访问
但唯一找到的解决方案是点击
ahot.track("model"+car_model.id)
并将其保存在事件中,然后我需要通过字符串查询,这不是通用的方式。
我想通过
Model.visits
访问任何模特
这样ahoy
支持吗?
这是为
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