При редактировании модели с формой, содержащей вложенные атрибуты модели, создается впечатление, что дочерние объекты проверяются только в том случае, если изменилось хотя бы одно поле дочернего объекта.
Однако предположим, что ваши правила проверки изменились, так что одна или несколько редактируемых вложенных моделей больше не считаются действительными. Как вы можете заставить Rails повторно проверять все поля для всех вложенных моделей?
UPDATE
Вот полный взлом, который работает. Надеюсь, кто-нибудь знает более элегантный подход.
# parent.rb
has_many :children
# Manually force validation of all the children.
# This is lame because if you have multiple child associations, you'll have to
# keep updating this method.
def reset_validation
self.children.each{|child| child.valid? }
self.valid?
end
# parent_controller.rb
def update
@parent.reset_validation
if @parent.update_attributes(params[:parent])
redirect_to(root_path, :notice => 'Parent successfully updated.')
else
render :action => "edit"
end
end