Frage

Ich versuche attachment_fu zu verwenden, um Dateien in einem Verzeichnis außerhalb der RAILS_ROOT hochladen. Ich möchte die Dateien auf ~/APP_NAME/uploads/ gespeichert werden, damit sie genehmigt werden kann / abgelehnt, bevor öffentlich zugänglich werden. Ich habe die folgende Konfiguration für has_attachment versucht:

has_attachment  :storage => :file_system,
                :path_prefix => "~/APP_NAME/uploads/",
                :max_size => 5.megabytes

Leider ist diese Konfiguration erstellt einfach die ~/APP_NAME/uploads/ Verzeichnisstruktur in RAILS_ROOT. Jede Art und Weise der Datei außerhalb von RAILS_ROOT speichern?

War es hilfreich?

Lösung 2

Ich fand eine alternative Methode das passt mir besser als relative Pfadnamen verwenden. Ich habe eine Methode full_filename meine Befestigungs Klasse aufgerufen:

class attachment < ActiveRecord::Base
    def full_filename
       return  "/Users/ron/attachments/#{id}.#{file_format}"
    end
end

Andere Tipps

Dies ist wahrscheinlich keine Anlage-Fu Problem, sondern vielmehr, wie Ruby-Griffe Datei-I / O und wie Dateien in Unix gespeichert werden.

So zum Beispiel, wenn Ihre App Leben in, sagen wir, ~ / Users / ron / APP_NAME

Wenn Sie den obigen Code ändern:

:path_prefix => "~/APP_NAME/uploads/"

An:

:path_prefix => "../#{RAILS_ROOT}/uploads"

Die Dateien würden in einem "uploads" in ~ / Users / ron / uploads genannt Ordner gespeichert werden. Das „../“ bedeutet ein Verzeichnis über die Stromschienen Wurzel. Wenn Sie zwei Verzeichnisse gehen wollen, wäre es „../../“ und so weiter.

Aber das nur Adressen hierarchische Navigation. Wenn Sie Anhänge-Fu zu speichern Dateien in einem fest einprogrammiert Verzeichnis im Dateisystem sagen wollten, könnten Sie es einen Dateipfad geben wie „~ / Users / ron / APP_NAME / uploads“, aber im Kopf Hardcoding halten diese in einem Dateipfad Art und Weise ist spröde und kann ein Schmerz in der Zukunft sollten die Dateien Speicheranforderungen ändern sein.

Ich hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top