2011-12-11 49 views
5

我有一个路径问题。在我的模型我有以下设置:如何将虾PDF文件存储到亚马逊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 

,并在控制器看起来我的行为是:

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 

而且我的问题是,这个PDF文件存储在S3服务器,但在不好的地方。而目录app/public/pdff/id_of_a_user/file_name_of_pdf_file是文件保存到

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

我不完全确定,如果我使用虾来保存PDF文件的权利,但我认为问题可能出现在控制器,我已经设置了位置,创建的文件必须保存在哪里。

我想问你,为了将PDF文件保存到S3的正确目录中,我应该改变什么......所有帮助将不胜感激!

曼尼的感谢,九月

回答

1

路径的Users/my_name/my_ruby_root_directory/name_of_my_project/public部分来自的:rails_root/public部分非常容易您在回形针中配置的路径。所以,如果你真的想S3的“目录”是app/public/pdff/id_of_a_user/file_name_of_pdf_file你需要给回形针以下路径:app/public/pdffiles/:user_id/:style/:basename.:extension

另外,根据你的模型,你应该使用pdff.invoice_file = pdf_file,而不是pdff.pdffile_file = pdf_file

我希望这有助于。