2010-04-27 9 views
3

Existe-t-il une taille de fichier de type validates_attachment, à l'exception d'une limite de taille de fichier dynamique? Voici un exemple:Taille de pièce jointe dynamique pour trombone (rails)

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 

J'ai essayé mais j'ai toujours une erreur disant "méthode inconnue". Lambdas et Procs ne fonctionnent pas non plus. Est-ce que quelqu'un a déjà essayé ça? Merci

Répondre

6

Donc, vous avez probablement besoin d'écrire une validation personnalisée:

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

Cela a bien fonctionné. Merci! J'espérais qu'il y aurait un peu mieux, mais je suppose que non pour l'instant. Peut-être que je vais soumettre un patch à Paperclip. :) – CalebHC

2

coup long ...

validates_attachment_size :document, :less_than => :get_current_file_size_limit

Habituellement, lorsque le passage d'une fonction, vous devez passer le symbole et non la fonction réelle. Paperclip ne permet pas de passer la fonction en tant que paramètre de limite de taille.

+0

Ouais, je pensais que cela pourrait fonctionner, mais rien. Merci quand même! – CalebHC