我不知道如何解决以下鸡蛋和鸡肉的问题
我有一个名为Batch
的模型,通过Status
回调触及验证时的父模型before_validation
。
在父模型中的after_touch
回调 - Status
,(状态has_many批处理) - 我正在检查Status
实例的所有子项是否都将属性设置为true。
我面临的问题是所有这些都是在一个数据库提交中执行的,因此即将使用设置为true的属性更新的Batch
的子实例不会保留在after_touch
内部after_find
1}}父母的回调并不是真的回应,所有这一切都失败了。
您是否认为可以在不对数据库进行两次提交的情况下使其正常工作?
一个重要信息:我正在检查的属性是一个虚拟属性,在子模型中Batch
回调中赋值($LocalUsers = [ADSI]"WinNT://$env:COMPUTERNAME"
)
答案 0 :(得分:0)
是,
您可以在父模型中添加 validates_associated:batches
并在保存时在批处理(子)模型中添加验证,以检查该属性是否为真。
谢谢
答案 1 :(得分:0)
在认为我改变逻辑后,我的子模型更新如何触发Status
上的更新。
我没有在父级中使用after_touch
回调,而是将所有代码移动到属于Batch
的回调。在after_save
回调中使用self.status.batches
之前,我还必须更改用于after_save
的回调类型,以便将批处理实例保留到数据库。