我在rails 4应用程序中使用社交化gem和public_activity gem。
我的一切工作几乎都是我想要的,除非我无法弄清楚如果删除它所引用的项目后如何删除活动记录。
http://swatinakshtra.wordpress.com/2013/11/24/public_activity-gem/
这篇博客文章提到你可以在被删除对象的控制器中使用before_destroy方法删除它们,但是我没有访问该控制器,因为它是socializer gem的一部分。
实现这一目标的正确方法是什么?我想我正在寻找某种类型的删除级联'选项。
答案 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
到我的不同之后运行的程序,以及在取消关注之后的类似程序。它暂时成功。
我希望有人能通过更自动化的解决方案获得更好的答案。