У меня есть ассоциация 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, даже если все foos удалены _destroy.
Как мне заставить update_attributes
вести себя так же, как save
?