2011-12-11 2 views
5

Ho un problema con il percorso. Nel mio modello ho seguente configurazione:Come archiviare i file PDF di gamberi in Amazon S3

class Pdffiles < ActiveRecord::Base 
    belongs_to :user 

    has_attached_file :invoice_file, 
        :path => ":rails_root/public/pdffiles/:user_id/:style/:basename.:extension", 
        :url => "/pdffiles/:user_id/:style/:basename.:extension", 

        :storage => :s3, 
         :bucket => '...', 
         :s3_credentials => { 
          :access_key_id => '...', 
          :secret_access_key => '...' 
         } 
end 

e in un controllore guarda la mia azione questo:

pdf = Prawn::Document.new 
    pdf.move_down 70 

    pdf.text("Prawn Rocks") 
    pdf.render_file('prawn.pdf') 
    pdf_file = File.open('prawn.pdf') 

    pdff = Pdffile.new() 
    pdff.pdffile_file = pdf_file 
    pdff.user_id = todays_user.id 
    pdff.save 

E il mio problema è, che questo file PDF viene memorizzato sul server S3, ma sul brutto posto Invece la directory app/public/pdff/id_of_a_user/file_name_of_pdf_file è il file salvato in

Users/my_name/my_ruby_root_directory/name_of_my_project/public/pdffiles/id_of_a_user/file_name_of_pdf_file.

Non sono assolutamente sicuro, se utilizzo il gambero per salvare i file PDF nel modo giusto, ma penso che il problema potrebbe essere nel controller, dove ho impostato il luogo, in cui il file creato deve essere salvato.

Vorrei chiedere, cosa dovrei cambiare per salvare i file PDF nella directory giusta in S3 ... Tutti gli aiuti saranno apprezzati!

Manny grazie, Sep

risposta

1

La porzione Users/my_name/my_ruby_root_directory/name_of_my_project/public del percorso è venuto da parte del :rails_root/public il percorso che hai configurato in paperclip. Quindi, se si vuole veramente la "directory" s3 essere app/public/pdff/id_of_a_user/file_name_of_pdf_file è necessario dare graffetta il seguente percorso: app/public/pdffiles/:user_id/:style/:basename.:extension

Inoltre, in base al modello, è necessario utilizzare pdff.invoice_file = pdf_file invece di pdff.pdffile_file = pdf_file

Spero che questo aiuta.