导轨 - after_save的 - 如何确定一个记录的创建/更新或删除

问题描述:

在我的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

应该不是你的MessageView模型属于Permission?然后你可以设置:dependent=>:destroy,一切都应该自动工作。您可以使用destroyed?方法。

我不认为有什么等效的created?方法,但你可以把你的代码放在Permissions模型中的after_create回调中。如果你想保持一致,那么还有一个after_destroy的回调。

另一种奇怪的方式是检查模型的created_at时间是否与updated_at时间相同。如果是这样,那么它已经创建,但尚未更新。