Есть ошибка с accepts_nested_attributes_for . Это означает, что вы должны быть немного хитрее, когда дело доходит до проверок в родительской модели.
Вы можете использовать обратный вызов: after_save в каждой из ваших вложенных моделей, чтобы проверить, является ли она последней. Но если есть много вложенных ассоциаций, где вы хотите обеспечить хотя бы одну, это не очень СУХОЙ.
Это, однако, допустимый обходной путь для связанной ошибки:
class Whatever < ActiveRecord::Base
:has_many => :association_a
:has_many => :association_b
def ensure_minimum_associations
bad_associations = [:association_a, :association_b].
select{|assoc| self.send(assoc).all?{|a| a.marked_for_destruction?}}
unless bad_associations.empty?
bad_associations.each do |association|
errors.add_to_base "Each #{self.class.name.downcase} must retain at least one #{association}"
end
return false
end
end
end