Ruby on rails 如果嵌套关联验证失败,如何允许记录保存事件

Ruby on rails 如果嵌套关联验证失败,如何允许记录保存事件,ruby-on-rails,accepts-nested-attributes,Ruby On Rails,Accepts Nested Attributes,我有一个例子,一个模范家长有很多孩子。模型子项有一些验证 在父模型表单中,我使用嵌套属性构建模型子对象的多个实例。问题是,如果其中一个子模型的验证失败,则整个父模型不会保存,并且不会创建所有其他有效子模型 有没有办法防止这种行为,创建所有有效的关联,并以静默方式使无效的关联失败 我试图删除选项的逆_,但没有成功 更新: 这似乎是不可能的,所以我提出了这个解决方案。我添加了skip_验证以避免两次验证关联记录(一次在children_attributes=方法中,另一次在保存时) 类父类 子项属性

我有一个例子,一个模范家长有很多孩子。模型子项有一些验证

在父模型表单中,我使用嵌套属性构建模型子对象的多个实例。问题是,如果其中一个子模型的验证失败,则整个父模型不会保存,并且不会创建所有其他有效子模型

有没有办法防止这种行为,创建所有有效的关联,并以静默方式使无效的关联失败

我试图删除选项的逆_,但没有成功

更新

这似乎是不可能的,所以我提出了这个解决方案。我添加了skip_验证以避免两次验证关联记录(一次在children_attributes=方法中,另一次在保存时)

类父类
子项属性=(属性)
超级的
new|u children=self.children.select{| child | child.new|u record?}
新来的孩子,每个都是孩子|
如果孩子是合法的?
child.skip_validation=true
其他的
self.children.delete(child)
结束
结束
结束
结束
班童
属性访问器:跳过属性验证
验证:属性,状态:true,除非::跳过验证?
def跳过\u验证?
!!跳过验证
结束
结束

我不确定,但也许您应该创建一个具有嵌套关联的对象,然后迭代它并保存有效的关联。如果无效,请使用
next
跳转到下一个迭代。我可以这样做,但我想知道是否有一个解决方案,可以使用accepts\u nested\u attributes\u for feature。如果
accepts\u nested\u attributes\u for
功能中的
receive\u If
选项。您有将要创建的实例的属性散列,但我在这里看到的唯一一件事是实例化那里的对象并使用
valid?
,这样它在无效时会被拒绝,但我想这将需要大量处理:/@fanta是对的,这里有一个例子,该解决方案的问题是它将运行两次验证。另外,我还有一个验证,它使用了一个唯一性,使用了parent_id范围。我可以在每个子对象的参数中传递父对象id。我只是觉得很讨厌。如果在的accepts_nested_attributes_中有一个选项允许保存父记录,我不确定,但也许您应该创建一个具有嵌套关联的对象,然后迭代它并保存该关联(如果该关联有效)。如果无效,请使用
next
跳转到下一个迭代。我可以这样做,但我想知道是否有一个解决方案,可以使用accepts\u nested\u attributes\u for feature。如果
accepts\u nested\u attributes\u for
功能中的
receive\u If
选项。您有将要创建的实例的属性散列,但我在这里看到的唯一一件事是实例化那里的对象并使用
valid?
,这样它在无效时会被拒绝,但我想这将需要大量处理:/@fanta是对的,这里有一个例子,该解决方案的问题是它将运行两次验证。另外,我还有一个验证,它使用了一个唯一性,使用了parent_id范围。我可以在每个子对象的参数中传递父对象id。我只是觉得很讨厌。如果在的accepts_nested_attributes_中有允许保存父记录的选项。