在我的rails应用中,我有以下模型:
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.
谢谢
您的MessageView
模型不应该属于Permission
吗?然后你可以设置:dependent=>:destroy
,一切都应该自动工作。
否则可以使用destroyed?
方法。
我不认为有任何等效的created?
方法,但你可以把你的代码在Permissions
模型的after_create
回调。如果你想保持一致,也有一个after_destroy
回调。
另一种破解方法是检查模型的created_at
时间是否与updated_at
时间相同。