我有一个用户模型,并且有一个带载波的图像模型。
我想限制用户可以上传的图片数量,因为我有第二个表单,用户去上传图像,我希望他只能上传3张图片。这有一个优雅的解决方案吗?或者我是否必须制作一个自定义验证器来计算用户的图像数量?
答案 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