У меня есть has_many
ассоциация, которая принимает вложенные атрибуты.Мне нужно, чтобы в коллекции было минимум 1 связанный объект, поэтому я написал специальный валидатор:
class MinimumCollectionSizeValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
if value.size < options[:size]
record.errors[attribute] << (options[:message] || "must have at least #{options[:size]} line.")
end
end
end
Модель выглядит так:
has_many :foos, :dependent=>:destroy
accepts_nested_attributes_for :foos
validates :foos, :minimum_collection_size=>{:size=>1}
Это прекрасно работает насоздание модели, но терпит неудачу при обновлении.@my_model.update_attributes(params[:my_model])
возвращает true, даже если _destroy удаляет все foos.
Как заставить update_attributes
вести себя так же, как save
?