2014-07-11 56 views
0

我在rails 4應用程序中使用社會化gem和public_activity gem。刪除與public_Activity和社會化關聯後的活動

我有一切工作幾乎如何我想要它,除了我不知道如何刪除活動記錄一旦它所指的項目被刪除。

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

本博客文章中提到,你可以在對象被刪除控制器before_destroy方法刪除這些,但我沒有,因爲socializer寶石的部分訪問該控制器。

實現此目的的正確方法是什麼?我想我正在尋找某種'刪除級聯'選項。

回答

0

我已經加入

PublicActivity::Activity.where('trackable_type = ? and trackable_id not in (select id from likes)', ["Socialization::ActiveRecordStores::Like"]).delete_all 

到剛過我不像運行的程序,並取消關注後,類似的一個臨時解決了這個。它暫時做的伎倆。

我希望有人用更自動的解決方案有更好的答案。

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 
相關問題