У меня есть случай, когда у модельного родителя много детей.Модель Child имеет несколько проверок.
В форме родительской модели я создаю несколько экземпляров модели Child с использованием вложенных атрибутов.Проблема заключается в том, что если одна из проверок дочерних элементов завершается неудачно, вся модель Parent не сохраняется, а все остальные допустимые дочерние элементы не создаются.
Есть ли способ предотвратить такое поведение и создать вседействительные ассоциации и молча провалить недействительные?
Я пытался удалить опцию inverse_of, но она не сработала.
ОБНОВЛЕНИЕ :
Кажется, что это невозможно, поэтому я выступил с этим решением.Я добавил skip_validation, чтобы избежать проверки связанных записей дважды (одна в методе children_attributes =, а другая при сохранении).
class Parent
children_attributes=(attributes)
super
new_children = self.children.select { |child| child.new_record? }
new_children.each do |child|
if child.valid?
child.skip_validation = true
else
self.children.delete(child)
end
end
end
end
class Child
attr_accessor :skip_validation
validates :attribute, presence: true, unless: :skip_validation?
def skip_validation?
!!skip_validation
end
end