使用public_Activity和socialization删除关联后删除活动

时间:2014-07-11 06:28:32

标签: ruby-on-rails ruby public-activity

我在rails 4应用程序中使用社交化gem和public_activity gem。

我的一切工作几乎都是我想要的,除非我无法弄清楚如果删除它所引用的项目后如何删除活动记录。

http://swatinakshtra.wordpress.com/2013/11/24/public_activity-gem/

这篇博客文章提到你可以在被删除对象的控制器中使用before_destroy方法删除它们,但是我没有访问该控制器,因为它是socializer gem的一部分。

实现这一目标的正确方法是什么?我想我正在寻找某种类型的删除级联'选项。

2 个答案:

答案 0 :(得分:2)

您可以从Socializer gem扩展模型,并在我引用的活动的对象模型中添加:after_destroy方法。

我还没有使用过Socializer,但做了类似Acts_as_taggable_on gem的事情。在我的初始值设定项中,我添加了一个带有以下内容的acts_as_taggable_on_extension.rb:

module ActsAsTaggableOn
  class Tagging
  include PublicActivity::Common
  after_destroy :delete_tag_activity

  def delete_tag_activity
      activity = PublicActivity::Activity.where('trackable_type = ? AND trackable_id = ?',  'ActsAsTaggableOn::Tagging',self.id).first
    if activity
      activity.destroy
    end
  end

  end
end

答案 1 :(得分:0)

我已经通过添加

暂时解决了这个问题
PublicActivity::Activity.where('trackable_type = ? and trackable_id not in (select id from likes)', ["Socialization::ActiveRecordStores::Like"]).delete_all

到我的不同之后运行的程序,以及在取消关注之后的类似程序。它暂时成功。

我希望有人能通过更自动化的解决方案获得更好的答案。