使用gem未读与public_activity

我不确定这是可能的,但考虑到你可以将方法注入模块的方法,有没有办法将“acts_as_readable:on =>:updated_at”注入PublicActivity :: Activity?

问题是:我希望unread还能跟踪用户尚未看到的新活动,所以我首先尝试这种方式。

class Activity  :updated_at end class User < ActiveRecord::Base acts_as_reader end 

但是当我这样做时,我在记录(DB table read_marks)中注意到了

 Activity.mark_as_read! :all, :for => current_user 

将readable_type键设置为’PublicActivity :: Activity’而不是’Activity’

这是因为Unread gem使用

 user.read_marks.build(:readable_id => obj.id, :readable_type => self.base_class.name) 

base_class给出了最接近ActiveRecord :: Base的类什么是最好的选择?

1)以某种方式将’acts_as_readable:on =>:updated_at’直接注入PublicActivity :: Activity

2)fork PublicActivity并检查是否安装了Unread gem,如果是,则添加’acts_as …’行

3)分叉Unread gem并且…不确定我会在这里做什么,想到的第一个丑陋的事情是检查一个类是否以PublicActivity开头!

而且只是为了定义问题:由于记录的(DB table read_marks)可读类型是PublicActivity :: Activity而不是Activity ,我的

 Activity.unread_by(current_user).count 

永远不会返回正确的计数。 运用

 PublicActivity::Activity.unread... 

因为’acts_as_readable:on =>:updated_at’在Activity而不是PublicActivity :: Activity中会失败。

UPDATE

我试图’猴子补丁’Public_Activity插件,但现在我更加困惑为什么它失败了,它一定是我正在做的蠢事。 我添加了以下文件。 然而,readable_type仍然是PublicActivity :: Activity,我的计数在我做之后仍然是相同的

 PublicActivity::Activity.mark_as_read! :all, :for => current_user # config/initializers/activity_unread.rb PublicActivity::Activity.module_eval do acts_as_readable :on => :updated_at end 

UPDATE

啊! read_type字段的限制只有20,这截断了我的类名。 现在它在我增加尺寸后起作用了。

REKO

不确定你是否找到了解决方案,但是要摆脱错误(我使用的是Ruby 1.9.3和Rails 3.2)的变化

PublicActivity :: Activity.template = YAML.load_file(“#{RAILS_ROOT} /config/pba.yml”)

PublicActivity :: Activity.template = YAML.load_file(“#{Rails.root} /config/pba.yml”)

我创建了一个名为pba_setup的文件,并将上面的行插入到初始化文件夹中。 现在,这在加载时清除了错误,但我仍然得到一个丢失的模板错误? 希望这可以帮助!

想法是:每当用户看到他的public_activity页面时,在PublicActivities表中创建他的自定义活动 。

下次,当用户看到他的页面,然后将该日期(“publicactivity.visit”)活动与所有新活动进行比较,并显示所有未读的新活动

您可以使用此计算属于当前用户的所有活动

  <%= PublicActivity::Activity.order("created_at desc").where(owner_id: current_user.follower_ids , owner_type: "User").count %>