使用carrierwave限制文件上传量

Got*_*osh 1 file-upload ruby-on-rails carrierwave

我有一个用户模型,并有一个带载波的图像模型.

我想限制用户可以上传的图像数量,因为我有第二种形式,用户去上传图像,我希望他只能上传3张图像.这有一个优雅的解决方案吗?或者我是否必须制作一个自定义验证器来计算用户的图像数量?

pja*_*jam 6

我想你的模型在某种程度上类似于:

class User
  has_many :photos
end

class Photo
  belongs_to :user
  mount_uploader :file, PhotoUploader
end
Run Code Online (Sandbox Code Playgroud)

这意味着您只需在用户上添加一个验证,即可以拥有多少张照片.您可以看到该帖子:限制has_many关联中的对象数量

您最终会在照片模型中看到类似的内容:

LIMIT = 3

validate do |record|
  record.validate_photo_quota
end

def validate_photo_quota
  return unless self.user
  if self.user.photos(:reload).count >= LIMIT
    errors.add(:base, :exceeded_quota)
  end
end
Run Code Online (Sandbox Code Playgroud)