4

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

A post was deleted.

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

谢谢。

4

2 回答 2

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

希望这可以帮助某人。

于 2013-08-25T13:29:08.443 回答
2

在您的 Post 模型中,您可以跟踪详细信息 0f 已删除的帖子,以便在显示有关帖子删除的通知时使用它。您可以改进您的通知“帖子已删除”,例如“内容 XYZ 以 abc 时间格式删除的帖子”,例如您的 Post.rb 有一个字段 :content 所以在您的 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 => post.destroy 拒绝活动记录,因为它在您的通知控制器中的操作索引类 NotificationsController < ApplicationController

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

这不会在通知中通知帖子删除详细信息。

于 2013-06-12T12:01:15.607 回答