回形针(导轨)的动态附件尺寸

时间:2010-04-27 22:19:54

标签: ruby-on-rails validation paperclip

除了动态文件大小限制之外,还有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

我已经尝试了这个,但我一直收到错误说“未知方法”。 Lambdas和Procs也不起作用。有没有人试过这个?感谢

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

远射......

validates_attachment_size :document, :less_than => :get_current_file_size_limit

通常在传递函数时,您必须传递符号而不是实际函数。

答案 2 :(得分:0)

现在有一个内置的Paperclip验证:

validates_attachment_size :mp3, :less_than => 10.megabytes

将mp3更改为您的回形文件的名称。

有关更多有用的Paperclip提示,请参阅此帖子:http://thewebfellas.com/blog/2008/11/2/goodbye-attachment_fu-hello-paperclip