2013-01-09 23 views
1

我有一個用戶模型,並帶有載波的Image模型。使用carrierwave進行文件上傳的限制

我想限制用戶可以上傳的圖像數量,因爲我有第二種形式,用戶上傳圖像,我希望他只能上傳3張圖像。是否有這樣的elegante解決方案?或者我必須製作一個自定義驗證程序來統計用戶的圖像數量?

回答

5

我猜你的模型在某種程度上類似於:

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 
+0

這個作品!謝謝。 – Gotjosh