使用carrierwave限制文件上传量

时间:2013-01-09 15:09:53

标签: ruby-on-rails file-upload carrierwave

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

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

1 个答案:

答案 0 :(得分:6)

我猜你的模型与之类似:

class User
  has_many :photos
end

class Photo
  belongs_to :user
  mount_uploader :file, PhotoUploader
end

这意味着您只需在用户上添加一张有关可以拥有的照片数量的验证。您可以看到帖子:Limit number of objects in has_many association

你最终会在你的照片模型中找到类似的东西:

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