Проблема в том, что для существующей записи @parent.children_ids = [1, 2]
вступит в силу изменение в базе данных до вызова @parent.save
.
Попробуйте использовать validates_associated для проверкидочерние элементы вместо собственной проверки.
Чтобы убедиться, что имена детей уникальны в контексте родителя, используйте validates_uniqueness_of с параметром :scope
, чтобы указать уникальностьидентификатор родителяЧто-то вроде:
class Child < ActiveRecord::Base
belongs_to :parent
validates_uniqueness_of :name, :scope => :parent
end