Ich habe zwei Modelle: Collection
und Letter
. Collection
hat viele Letter
s und Letter
offensichtlich gehört zu Collection
.URL/PATH richtig für AWS S3 mit Büroklammer/Schienen einstellen
Unten ist mein Letter.rb Datei:
class Letter < ActiveRecord::Base
belongs_to :collection
has_attached_file :pdf,
:url => "/pdf/:id/:style/:basename.:extension",
:path => "/pdf/:id/:style/:basename.:extension",
:s3_host_name => host_name,
:storage => :s3,
:bucket => ENV['S3_BUCKET_NAME'],
:s3_credentials => {
:access_key_id =>#ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key =>ENV['AWS_SECRET_ACCESS_KEY']
}
validates_attachment :pdf,
:content_type => {
:content_type =>
["application/pdf", "text/plain", /\Aimage\/.*\Z/, "application/msword"]
}
end
Ich habe eine Frage zu url
und path
Attribut in has_attached_file
.
Anstatt die ID des Buchstabenmodells im Pfad zu setzen, möchte ich die ID der Sammlung festlegen. Zusätzlich möchte ich auch title
setzen, was das Attribut von Letter ist. Lassen Sie uns sagen @collection
's ID ist 1. @collection
hat @ letter1 und @ letter2. Wenn ich die Dateien in AWS S3 speichere, möchte ich sie unter /pdf/1(which is collection_id)/:title
speichern. Wie kann ich das in url
und path
schreiben?
In 'config/initializers' -Verzeichnis, mache ich eine' papierklammer.rb' oder etwas? Wo sollte ich den Interpolationscode eingeben? Und kannst du ein wenig erklären, was ': style /: basename.: Extension" 'tut? Ich weiß nicht warum, aber es wird weiterhin' Original'-Ordner in AWS gemacht. Ist das wegen ': style /: basename.:extension "'? – JoHksi
Hallo, ja, Sie können ein Skript namens paperclip.rb erstellen. Das klingt logisch, aber es kann einen beliebigen Namen haben (interpolations.rb wäre auch ein guter Name). Ich werde die Antwort bezüglich der Eigenschaft ': style',': basename' und ': extension' aktualisieren. – Stijnster
Vielen Dank für die perfekte Antwort !! – JoHksi