Paperclip y sus interpolaciones
Se da el caso en que a veces, cuando utilizamos Paperclip, necesitamos que el path de un mismo adjunto sea diferente según su origen. Esto viene bien para guardar su información relacionada (MIME type, tamaño y nombre) en el mismo campo, pero flexibilizando al máximo su ubicación. Para ello, esta popular gema de Rails pone a nuestra disposición una característica muy útil: las interpolaciones.
Con ellas podemos mandar un parámetro extra (mediante un campo oculto, por ejemplo) al modelo para decirle dónde guardar el archivo, qué nombre darle o cualquier otra cosa. Ahora mismo nos centraremos en el primer ejemplo.
Primero, creamos un “initializer” con el siguiente contenido:
-
Paperclip::Interpolations[:folder] = proc do |attachment,style|
-
attachment.instance.folder
-
end
De esta manera estamos habilitando el uso de la palabra reservada “:folder” en la instrucción “has_attached_file“, así:
-
has_attached_file :att, :path => ":folder/:id.:extension"
