我不确定这是否可行,但考虑到你可以将方法注入模块的方法,有没有办法将“acts_as_readable:on =>:updated_at”注入PublicActivity :: Activity?
问题在于:我希望未读也跟踪用户尚未看到的新活动,所以我首先尝试这种方式。
class Activity < PublicActivity::Activity
acts_as_readable :on => :updated_at
end
class User < ActiveRecord::Base
acts_as_reader
end
但是当我做
时,我在记录(DB table read_marks)中注意到了Activity.mark_as_read! :all, :for => current_user
read_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 =&gt; :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 =&gt; :updated_at'在Activity中,而不是PublicActivity :: Activity。
更新
我试图'猴子修补'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
更新
AH! read_type字段的限制只有20,这截断了我的类名。现在它增加了尺寸后就可以了。
答案 0 :(得分:2)
REKO
不确定您是否找到了解决方案,但是要解决错误(我使用的是Ruby 1.9.3&amp; 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的文件,并将上面的行插入到初始化文件夹中。现在,这在加载时清除了错误,但我仍然得到一个丢失的模板错误?希望这有帮助!
答案 1 :(得分:1)
想法是:每当用户看到他的public_activity页面时,在PublicActivities表中创建他的custom activity。
下次,当用户看到他的页面,然后将该日期(“publicactivity.visit”)活动与所有新活动进行比较,并显示所有未读的新活动
答案 2 :(得分:0)
您可以使用此
计算属于当前用户的所有活动<span class='badge'>
<%= PublicActivity::Activity.order("created_at desc").where(owner_id: current_user.follower_ids , owner_type: "User").count %>
</span>