2 Stimmen

Büroklammer-Interpolation bei falscher Übereinstimmung von Dateinamen und Datenbank/Ist

Ich entwickle eine kleine Anwendung zum Hochladen von einfachen Textdateien mit Paperclip. Ich habe eine Upload Modell, das eine Dokumentenanlage hat. Ich möchte die hochgeladene Datei so umbenennen, dass sie dasselbe ist wie Upload.title .

Ich habe dazu eine Paperclip-Interpolation verwendet.

#config/initializers/paperclip.rb
Paperclip.interpolates('upload_title') do |attachment, style|
  attachment.instance.title.parameterize
end

#app/models/upload.rb
has_attached_file :document,
  :url => "/:attachment/:id/:upload_title.:extension",
  :path => ":rails_root/public/:attachment/:id/:upload_title.:extension"

Die Datei selbst wird jedoch umbenannt, aber die document_file_name in der Datenbank bleibt so wie sie war.

Ich habe eine Test-App erstellt und auf Github hochgeladen aquí

Hier erstelle ich eine neue Upload und fügen Sie die Datei " Original File Name.txt "

garethrees.de/misc/new.JPG

Hier sehen Sie die neue Upload erstellt, allerdings mit dem ursprünglichen Dateinamen.

garethrees.co.uk/misc/created.JPG

Und auch in der Datenbank, der document_file_name bleibt, wie sie war.

garethrees.de/misc/db.JPG

Im eigentlichen Dateisystem ist das Dokument jedoch est umbenannt.

garethrees.de/misc/finder.JPG

Beide Datensätze müssen unbedingt übereinstimmen, da ich den Paperclip-Pfad verwenden muss, damit die Benutzer die Dateien herunterladen können.

Gracias

0voto

Kalendae Punkte 2246

Erstellen Sie eine Callback-Funktion für after_document_post_process, in der Sie den document_file_name selbst auf den Titel + Erweiterung setzen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X