【问题标题】:Rails 3 public_activity, destroy recordRails 3 public_activity,销毁记录
【发布时间】:2013-06-12 11:12:57
【问题描述】:

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

A post was deleted.

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

谢谢。

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

    我认为这是 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
    

    希望这对某人有所帮助。

    【讨论】:

    【解决方案2】:

    在您的帖子模型中,您可以跟踪详细信息 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

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

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

    【讨论】:

    • 感谢您的回复。由于我不想转储表格并浪费一些空间,我可以删除该记录吗?我的意思是它实际上可能吗?
    • 您可以选择一条记录activity = PublicActivity::Activity.select{|activity|(activity.key == "post.destroy")} 并在index方法中删除它然后使用所有活动记录通知对吗?
    • 我实际上是在尝试为帖子加星标/取消星标。当我取消一个帖子时,我希望删除我加星标时的活动。有可能吗?
    • 我解决了这个问题..非常感谢.. :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多