2016-03-18 12 views
0

Ich verwende erfolgreich den Paperclip-Juwel, um Dateien auf Amazon S3 hochzuladen. Meine Frage ist, wie kann ich mein Modell konfigurieren, um den Dateipfad basierend auf Objektattributen zu ändern?Dynamisch den Dateipfad für Amazon S3-Assets mit Paperclip-Juwel erstellen

Zum Beispiel möchte ich ein Bild von einem 2015 RAM 1500 zu "Autos/2015/RAM/1500 /: ID."

Folgendes habe ich ausprobiert. Die ": id /: style_: extension" wird durch die richtige Information ersetzt, die anderen Attribute nicht - obwohl jedes Auto ein Jahr, einen Hersteller und ein Modell hat.

class Car < ActiveRecord::Base 
    has_attached_file :file, default_url: "/images/:style/missing.png" 
    validates_attachment_content_type :file, content_type: /\Aimage\/.*\Z/ 
    has_attached_file :file, 
       :storage => :s3, 
       :path => "cars/:year/:manufacturer/:model/:id/:style_:extension", 
       :s3_credentials => Proc.new{|a| a.instance.s3_credentials } 

    belongs_to :manufacturer 

    def s3_credentials 
    {:bucket => ENV['bucket'], :access_key_id => ENV['access_key_id'], :secret_access_key => ENV['secret_access_key']} 
    end 
end 

Antwort

0

Ok, dann ist es in der Dokumentation (oops): Paperclip Interpolations

ich diesen Block für jedes Attribut hinzugefügt ich zu meinem Auto Modell zur Interpolation benötigt:

Paperclip.interpolates :year do |attachment, style| 
    attachment.instance.year 
end