Paperclip y sus interpolaciones
14/10/2009
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 en el mismo campo (MIME type, tamaño y nombre), 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 setear cualquier dato que necesitemos utilizar después.
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"