ruby-on-rails - 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 张上传的图片?另外,是否可以弹出“您最多只能上传四张图片”的提示?
您还需要我提供哪些其他信息?(架构/控制器?我不太热衷于上传这些,因为它有点太大了)
解决方案
您可以在模型中添加自定义验证方法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] 访问对象和错误。
推荐阅读
- python - 在 matplotlib 图例中使用方程(带符号)
- scala - spark关闭动态分配
- javascript - 构造函数在 React 组件中被调用两次
- java - 如何减慢光传感器的监听速度?
- web - 将新应用程序部署到 Heroku 时出现内部服务器错误 500
- vue.js - 滚动到 v-data-table 中以编程方式选择的行
- sql - oracle 约束数据类型
- python - 无法将重复的 protobuf 对象保存到文件(Python)
- amazon-web-services - 使用原始正文在 javascript 中向 AWS API Gateway 发送 ajax 请求
- c# - C# WPF MVVM ItemSource 未附加列表