Rails 3 public_activity,销毁记录

时间:2013-06-12 11:12:57

标签: ruby-on-rails-3

如果用户创建帖子,我正在使用public_activity gem跟踪。 是否有办法在删除帖子时销毁公共活动记录,以便在活动Feed中不会显示如下内容:

A post was deleted.

而只是删除活动表中的特定活动

感谢。

2 个答案:

答案 0 :(得分:8)

我认为OP正在寻找/可能已经找到了,但没有在解决方案中发布。

快速示例场景:

用户创建评论,因此为该评论创建了公共活动记录(密钥:comment.create)。

现在,让我们说用户删除他的评论。

活动表中仍然存在一个与刚删除的原始评论相关的活动(关键字:comment.create)。

当用户删除其相应的活动时,一起删除该原始活动(键:comment.create)。只需执行以下操作即可。

#comments_controller.rb or whatever class you are tracking
def destroy
  @comment = current_user.comments.find(params[:id])
  @activity = PublicActivity::Activity.find_by(trackable_id: (params[:id]), trackable_type: controller_path.classify)
  @activity.destroy
  @comment.destroy
end

希望这有助于某人。

答案 1 :(得分:2)

在Post模型中,您可以跟踪已删除帖子的详细信息,以便在显示有关删除帖子的通知时使用它。 你可以改进你的通知“帖子被删除”,例如“以abc时间格式删除内容XYZ的帖子” 例如你的Post.rb有一个字段:内容在你的Post.rb

class Post <  ActiveRecord::Base
  include PublicActivity::Model
tracked :params => {
      :content => proc {|controller, model| (model.content)}   
  }

并在你的public_activity / post / destroy.html.haml中 您可以访问内容p[:content] 或者您可以使用以下命令拒绝活动记录:key =&gt; post.destroy 在你的通知控制器动作索引中 class NotificationsController&lt; ApplicationController中

def index
    @activities = PublicActivity::Activity.order("created_at DESC").reject{|activity| (activity.key == "post.destroy" }

这不会通知通知中的帖子删除详情。