我有一个带有以下代码的rails应用程序:
class Rig < ActiveRecord::Base
has_many :rig_pictures, :dependent => :destroy
accepts_nested_attributes_for :rig_pictures,
:allow_destroy => true,
#we reject blank pictures unless they have to be deleted
:reject_if => lambda { |a| a['picture'].blank? && !a['_destroy'] }
validate :has_beween_1_and_x_pictures
private
def has_beween_1_and_x_pictures
errors.add_to_base("must not have more than 8 pictures") if rig_pictures.size > 8
errors.add_to_base("must have at least 1 picture") if rig_pictures.size < 1
end
end
我的问题是“必须至少有1张图片”验证。如果用户在编辑表单中并删除了他的所有图片,则验证不会失败,因为在那时,它不知道我想要删除它。
所以我的问题是:如何确保验证只考虑真实图片而不是我想要删除的图片?
THX。
答案 0 :(得分:1)
也许您可以在RidPicture模型中尝试验证。
类似于
的东西def before_destroy
if ( self.rid.rid_pictures.count <= 1)
errors.add_to_base "Almost one image"
false
end
end
未经测试