2016-08-16 2 views
0

В моем приложении seeds.rb Я создаю объект Template, используемый для целей тестирования. Обычно шаблон создается через форму, для которой требуется файл, загруженный с ним. Файл сохраняется в S3, и URL-адрес добавляется к объекту Template в качестве атрибута.Rails ActiveRecord Создать с параметрами файла

Как передать в тело файла и имя файла в файле семени, чтобы URL-адрес был правильно установлен на объект Template?

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

Вы хотите сохранить файл, на котором ссылаетесь в файле seeds.rb на S3? Или вы надеетесь, что 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