2011-12-11 16 views
5

Tengo un problema con la ruta. En mi modelo que he siguiente configuración:Cómo almacenar archivos PDF de gambas en 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 

y en un controlador busca mi acción siguiente:

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 

Y mi problema es que este archivo PDF se almacena en el servidor S3, pero en el Mal lugar. En su lugar, el directorio app/public/pdff/id_of_a_user/file_name_of_pdf_file es el archivo guardado en

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

No estoy del todo seguro, si utilizo la gamba para guardar archivos PDF correctamente, pero creo que el problema podría estar en el controlador, donde configuré el lugar donde debe guardarse el archivo creado.

Me gustaría preguntarle qué debo cambiar para guardar archivos PDF en el directorio correcto en S3 ... ¡Todas las ayudas serán apreciadas!

Manny gracias, Sep

Respuesta

1

La parte Users/my_name/my_ruby_root_directory/name_of_my_project/public de la trayectoria de vino de parte de :rails_root/public la ruta que configuró en paperclip. Así que si realmente desea que el "directorio" s3 ser app/public/pdff/id_of_a_user/file_name_of_pdf_file que necesita para dar paperclip la siguiente ruta: app/public/pdffiles/:user_id/:style/:basename.:extension

También, de acuerdo a su modelo, se debe utilizar pdff.invoice_file = pdf_file en lugar de pdff.pdffile_file = pdf_file

espero que esto ayude.