2016-08-16 16 views
0

私のアプリのseeds.rbでは、テスト目的で使用するテンプレートオブジェクトを作成します。通常、テンプレートは、アップロードされたファイルを必要とするフォームを通じて作成されます。ファイルはS3に格納され、urlは属性としてTemplateオブジェクトに追加されます。Rails ActiveRecordファイルパラメータを使用して作成

シードファイル内のファイル本文とファイル名を渡して、テンプレートオブジェクトにURLが正しく設定されるようにするにはどうすればよいですか?

seeds.rb

# need to include params[:template][:body].tempfile 
# and params[:template][:body].original_filename 
template = user.templates.new(name: 'test_template.docx') 
template.save 

templates_controller.rb

def create 
    # upload to s3 
    file_name = params[:template][:body].original_filename 
    s3  = Amazon::S3.resource 
    obj  = s3.bucket(User.directory_bucket).object(current_user.uuid + '/templates/' + file_name) 

    obj.upload_file(params[:template][:body].tempfile) 

    # create template 
    @template = Template.create(name: file_name, url: obj.public_url, user_id: params[:template][:user_id]) 

    # redirects/response 
    end 
+0

S3のseeds.rbファイルに参照するファイルを保存しますか?あるいは、あなたはtest_template.docxがちょうどローカルに生きていけることを望んでいますか? – kcdragon

+0

私はS3にファイルを保存したいと思います。テストデータは後で清掃されます – Tyler

答えて

0

これを試してみてください。

user = ... # lookup the user you want to associate with 

file_name = 'test_template.docx' 
s3  = Amazon::S3.resource 
obj  = s3.bucket(User.directory_bucket).object(user.uuid + '/templates/' + file_name) 

obj.upload_file(File.new('path/to/' + file_name)) 

template = user.templates.new(name: file_name) 
template.save 
+0

Duh!私はこれを逃したと信じられない、ありがとう! – Tyler

関連する問題