首页 > 解决方案 > Ruby on Rails - 回形针 - 限制上传的图像数量

问题描述

问题:如何限制使用 Paperclip 为接受图像的“图片”类上传的图像数量?

我有模型,其中项目与图片具有一对多关系,并且图片具有附件图像,如以下代码所示:

class Picture < ActiveRecord::Base
  belongs_to :item

  has_attached_file :images, styles: { large: "600x600>", medium: "300x300>", thumb: "100x100>" },

  validates_attachment_content_type :images, :content_type => /^image\/(jpg|jpeg|pjpeg|png|x-png|gif)$/, :message => 'file type is not allowed (only jpeg/png/gif images)'
end

这是项目类:

class Item < ActiveRecord::Base
    has_many :pictures, :dependent => :destroy
end

上传方面的一切都很完美。但是,如何将图片模型修改为最多只接受 4 张上传的图片?另外,是否可以弹出“您最多只能上传四张图片”的提示?

您还需要我提供哪些其他信息?(架构/控制器?我不太热衷于上传这些,因为它有点太大了)

标签: ruby-on-rails

解决方案


您可以在模型中添加自定义验证方法Item(因此每个项目最多可以有 4 张图片)

https://guides.rubyonrails.org/active_record_validations.html#custom-methods

class Item < ActiveRecord::Base

  validate :only_4_pictures

  def only_4_pictures
    errors.add(:pictures, "You can't upload more than 4 pictures") if pictures.length > 4
  end

end

这将阻止对象被保存。

那么如何显示弹出窗口实际上取决于视图的代码,您可以使用 object.errors[:pictures] 访问对象和错误。


推荐阅读