Cargue un archivo en un directorio fuera de los carriles de la raíz con attachment_fu
-
21-09-2019 - |
Pregunta
Estoy tratando de utilizar attachment_fu para subir archivos a un directorio fuera de la RAILS_ROOT
. Quiero que los archivos que se guardan en ~/APP_NAME/uploads/
para que puedan ser aprobados / rechazados antes de convertirse a disposición del público. He intentado lo siguiente configuración para has_attachment
:
has_attachment :storage => :file_system,
:path_prefix => "~/APP_NAME/uploads/",
:max_size => 5.megabytes
Por desgracia, esta configuración simplemente crea la estructura de directorios en ~/APP_NAME/uploads/
RAILS_ROOT
. Cualquier forma de salvar el exterior archivo de RAILS_ROOT
?
Solución 2
He encontrado un método alternativo que me viene mejor que usar rutas relativas. He añadido un método llamado full_filename
a mi clase de apego:
class attachment < ActiveRecord::Base
def full_filename
return "/Users/ron/attachments/#{id}.#{file_format}"
end
end
Otros consejos
Esto probablemente no es un problema Accesorio-Fu, sino más bien cómo las manijas de Ruby / S de archivos, así como la forma en archivos se almacenan en Unix.
Así, por ejemplo, si su aplicación en la vida, por ejemplo, ~ / Usuarios / ron / APP_NAME
Si cambia el código anterior:
:path_prefix => "~/APP_NAME/uploads/"
Para:
:path_prefix => "../#{RAILS_ROOT}/uploads"
Los archivos se almacenan en una carpeta llamada "subidos" en ~ / Usuarios / ron / archivos. El "../" significa un directorio por encima de la corriente de raíz rieles. Si desea subir dos niveles, sería "../../" y así sucesivamente.
Pero eso sólo direcciones de navegación jerárquica. Si quería decir Accesorio-Fu para almacenar archivos en un directorio hardcoded en su sistema de archivos, usted podría darle una ruta de archivo como "/ Usuarios ~ / ron / APP_NAME / uploads", pero tenga en cuenta hardcoding en una ruta de archivo de esta forma es frágil y podría ser un punto de dolor en el futuro debe a sus necesidades de almacenamiento de archivos cambio.
Espero que ayude.