【问题标题】:delete Paperclip attachment unless it is the last one删除回形针附件,除非它是最后一个
【发布时间】:2011-01-20 15:28:10
【问题描述】:

我有一个带有以下代码的 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 张图片”验证。如果用户在编辑表单中并删除了他所有的图片,验证不会失败,因为那时它不知道我要删除什么。

所以我的问题是:如何确保验证只考虑真实图片而不考虑我要删除的图片?

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    类似于

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

    未测试

    【讨论】:

    • 不得不使用另一种策略,因为需求发生了变化。下次我会试试这个......肯定的一件事:PaperClip 确实需要更好的删除管理,我想我必须自己处理它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 2011-06-14
    相关资源
    最近更新 更多