我最近在我的应用程序中添加了用户活动跟踪功能,该功能跟踪用户与多个模型的交互,以及每个模型中的几个不同操作。
class User
has_many :activities, :order => 'created_at desc'
def log_activity(object, type)
activities.create(:subject_type => object.class.name, :subject_id => object.id, :subject_action_type => type)
end
end
现在我在用户创建/更新/删除各种对象并在用户配置文件上显示此活动后调用此方法。我想一段时间后,活动表将包含如此多的记录,它会达到影响加载时间的程度。我想知道以用户友好的方式管理它并保持我的数据库顺利运行的一个好的实现是什么。
我正在考虑设置某种计划任务,在 x 时间后清理旧记录。也许您可以就如何完成此任务提供一些建议或推荐更好的解决方案?
我使用PostgreSQL作为我选择的数据库。