Il caricamento di un file in una directory al di fuori di rotaie ROOT con attachment_fu
-
21-09-2019 - |
Domanda
Sto cercando di utilizzare attachment_fu per caricare i file in una directory al di fuori della RAILS_ROOT
. Voglio che i file siano salvati a ~/APP_NAME/uploads/
in modo che possano essere approvati / respinti prima di diventare disponibili al pubblico. Ho provato la seguente configurazione per has_attachment
:
has_attachment :storage => :file_system,
:path_prefix => "~/APP_NAME/uploads/",
:max_size => 5.megabytes
Purtroppo, questa configurazione crea semplicemente la struttura delle directory ~/APP_NAME/uploads/
in RAILS_ROOT
. Un modo per salvare il file al di fuori della RAILS_ROOT
?
Soluzione 2
Ho trovato un metodo alternativo che si adatta meglio di me utilizzando percorsi relativi. Ho aggiunto un metodo chiamato full_filename
alla mia classe di attaccamento:
class attachment < ActiveRecord::Base
def full_filename
return "/Users/ron/attachments/#{id}.#{file_format}"
end
end
Altri suggerimenti
Questo probabilmente non è un problema Allegato-Fu, ma piuttosto come Rubino gestisce file di I / O e come file sono memorizzati in Unix.
Così, per esempio, se la vostra applicazione vive, per esempio, ~ / Users / Ron / APP_NAME
Se si modifica il codice di cui sopra:
:path_prefix => "~/APP_NAME/uploads/"
A:
:path_prefix => "../#{RAILS_ROOT}/uploads"
I file saranno memorizzati in una cartella chiamata "arrivi" in ~ / Users / Ron / uploads. Il "../" significa una directory sopra la radice Rails corrente. Se si vuole andare su due directory, che sarebbe "../../" e così via.
Ma questo riguarda solo la navigazione gerarchica. Se si voleva dire Allegato-Fu per memorizzare i file in una directory hardcoded nel vostro filesystem, si potrebbe dare un percorso di file come ad esempio "~ / Users / Ron / APP_NAME / arrivi", ma di tenere presente hardcoding in un percorso di file presente modo è fragile e potrebbe essere un punto di dolore in futuro dovrebbero le vostre esigenze di archiviazione di file cambiare.
La speranza che aiuta.