我在尝试弄清楚如何订购ActiveRecord写入以使我的验证变得愉快时遇到了一些麻烦,而且我不确定该搜索何种问题。
问题是在请求发生之前,一切都会有效;转换发生后,一切都会再次有效;但是当转换发生时,由于它影响了多个模型实例,如果我逐个更新每个模型而不同时考虑这两个更改,数据库将进入无效状态。我喜欢一些建议!
背景
我有一个名为HelpRequest
的模型,另一个名为HelperAssignments
。
规则是HelpRequest
可能有0或1 有效 HelperAssignment
。但如果Helper
无法完成请求,则可能会将其重新分配给另一个Helper
,从而创建新的HelperAssignment
。由于我们需要特定HelpRequest
的分配历史记录,HelperAssignment
可能会有多个HelpRequest
,但只有一个是有效的。
因此,HelperAssignment
表具有一些相关属性:
help_request_id
:指与此作业相对应的HelpRequest
。close_status
:如果设置为reassigned
,则reassignment_id
必须存在。reassignment_id
:对于给定的help_request_id
,只有一个可能是nil
(即它是当前有效的作业)问题
重新分配时......
HelperAssignment
,则会中断验证,因为请求中会有多个有效HelperAssignment
:( HelperAssignment
更新为close_status
reassigned
,那么新的HelperAssignment
将不存在,所以我无法获得它的ID,因此验证将失败。有没有惯用的方法来进行这种转变?我想避免a)禁用此特定类型请求的验证,或b)为“正在重新分配”添加额外的数据库状态。看起来在Rails中强制引用完整性可能会让Rails变得有点棘手...提前感谢!