2011-04-23 71 views
0

在我的Rails應用程序,我有以下型號:導軌 - after_save的 - 如何確定一個記錄的創建/更新或刪除

Messages (id, title, content, project_id) 
MessageViews (id, message_id, view_status) 
Permissions (id, user_id, project_id) 
Projects (id, name) 

每當用戶添加到其現有的郵件,我想一個項目爲項目中的每條消息創建MessageView記錄。

同樣,如果用戶的項目權限被刪除,我想刪除與該項目的消息相關的所有用戶的messageViews。

在我的權限模型,所以到目前爲止,我有:

before_destroy :check_message_views 

    private 

    def check_message_views 
     ..... 
    end 

如何在check_message_views我能確定是否正在創建/更新或刪除的記錄。

When created/updated, I want to loop through and check 
When deleted, I want to loop through all the project's messages and delete any messageView for that user. 

感謝

+0

其實,在權限中,我應該使用a:has_many => MessageViews通過消息,依賴destory?不知道這是否會創建他們,雖然只是刪除? – AnApprentice 2011-04-23 02:25:34

回答

1

應該不是你的MessageView模型屬於Permission?然後你可以設置:dependent=>:destroy,一切都應該自動工作。您可以使用destroyed?方法。

我不認爲有什麼等效的created?方法,但你可以把你的代碼放在Permissions模型中的after_create回調中。如果你想保持一致,那麼還有一個after_destroy的回調。

另一種奇怪的方式是檢查模型的created_at時間是否與updated_at時間相同。如果是這樣,那麼它已經創建,但尚未更新。

相關問題