首页 > 解决方案 > Rails:限制用户可以上传的文件数量

问题描述

用户可以使用活动存储在我的 rails 应用程序中为他们的帖子上传多张图片,是否可以精确限制他们可以在表单中上传的照片数量?我想将其限制为每个用户 4 张图片。

<%= f.file_field :images, multiple: true, required: false  %>

标签: ruby-on-railstwitter-bootstraprails-activestorage

解决方案


您可以编写自定义验证。将以下代码添加到相关模型中。

validate :validate_images

private
def validate_images
  return if images.count <= 4

  errors.add(:images, 'You can upload max 4 images')
end

您也可以检查客户端的限制。以下代码来自此答案

$(function(){
  $("input[type='submit']").click(function(){
    var fileUpload = $("input[type='file']");
    if(parseInt(fileUpload.get(0).files.length) > 4) {
      alert('You can upload max 4 images');
    }
  });    
});​

推荐阅读