【发布时间】:2010-12-20 03:49:33
【问题描述】:
我有一个接受嵌套属性的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,即使所有的 foo 都被 _destroy 删除了。
如何让update_attributes 的行为与save 相同?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3