在我的rails应用程序中,我有以下型号:
Messages (id, title, content, project_id)
MessageViews (id, message_id, view_status)
Permissions (id, user_id, project_id)
Projects (id, name)
每当用户被添加到项目中的现有消息时,我想为项目中的每条消息创建一条MessageView记录。
同样,如果删除了用户的项目权限,我想删除与该项目消息关联的所有用户的messageView。
在我的权限模型中,到目前为止我有:
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 :(得分:1)
您的MessageView
模型不应属于Permission
吗?然后你可以设置:dependent=>:destroy
,一切都应该自动运行。
否则您可以使用destroyed?
方法。
我认为没有任何等效的created?
方法,但您可以将代码放在Permissions
模型的after_create
回调中。如果你想要保持一致,那么对此问题也有一个after_destroy
回调。
另一种hacky方法是检查模型的created_at
时间是否与updated_at
时间相同。如果是,那么它已被创建但尚未更新。