删除回形针附件,除非它是最后一个

时间:2011-01-20 15:28:10

标签: ruby-on-rails validation paperclip has-many

我有一个带有以下代码的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。

1 个答案:

答案 0 :(得分:1)

也许您可以在RidPicture模型中尝试验证。

类似于

的东西
def before_destroy
    if ( self.rid.rid_pictures.count <= 1)
      errors.add_to_base  "Almost one image"
      false
    end 
end

未经测试