Paperclip(Rails)的动态附件大小

3
有没有办法除了动态文件大小限制以外,使用validates_attachment_size验证文件大小?以下是一个例子:
class Document < ActiveRecord::Base
   belongs_to :folder
   has_attached_file :document
   validates_attachment_size :document, :less_than => get_current_file_size_limit

   private

   def get_current_file_size_limit
     10.megabytes # This will dynamically change
   end
end

我尝试过这个,但是一直出现“未知方法”错误。Lambda和Proc也不起作用。有人试过这个吗?谢谢。

3个回答

6

Paperclip不允许将函数作为大小限制参数传递。因此,您可能需要编写自定义验证:

  validate :validate_image_size

  def validate_image_size
    if document.file? && document.size > get_current_file_size_limit
      errors.add_to_base(" ... Your error message")
    end
  end

这个很好用。谢谢!我希望有一种稍微好一点的方式,但目前似乎没有。也许我会提交一个补丁给Paperclip。 :) - CalebHC

2

远程目标...

validates_attachment_size :document, :less_than => :get_current_file_size_limit

通常情况下,当传递一个函数时,你需要传递该函数的符号而不是实际函数。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接