发布视图:初始化为0,并在用户阅读帖子时递增。如果用户阅读相同的帖子,则不应该递增。
为了实现post view功能,我想到了两个选项。
每个帖子都有一个表格,列出了阅读帖子的所有用户。在PostController中,postview函数将首先尝试在表中查找用户,如果找不到用户,则会增加视图的数量。
使用cookies。每当用户阅读帖子时,我都会给他一个特定于该帖子的cookie。例如,cookie [:postId] = 1.因此,在增加视图数量之前,帖子控制器中的视图函数可以简单地检查用户是否具有特定帖子的cookie。
我不确定哪种选择会更好。我认为第二种选择更好,如果它适合,因为你可以节省数据库中的内存。但就网络流量而言,这种选择会更糟吗?我不是100%确定这两个选项是否有效,或者在效率方面哪个更好。
感谢您的帮助。
答案 0 :(得分:0)
使用(或从中获取灵感)印象派:https://github.com/charlotte-ruby/impressionist
然后您可以在记录上获得独特的展示次数:
# only record impression if the request has a unique combination of type, id, and session
impressionist :unique => [:impressionable_type, :impressionable_id, :session_hash]