使用ActiveStorage错误附加Tempfile

时间:2018-02-11 18:07:59

标签: ruby-on-rails ruby-on-rails-5 rails-activestorage

我无法在服务对象中使用Active Storage将JSON Tempfile附加到模型。这很容易复制:

型号:

class ServiceRequest < ApplicationRecord
  has_one_attached :data_file

过程:

temp_file = Tempfile.new([SecureRandom.uuid, '.json'])

@service_request.data_file.attach(temp_file)

错误:

ActiveRecord::RecordNotSaved (Failed to save the new associated data_file_attachment.)

我在data_file模型上将string定义为ServiceRequest。不知道这里可能出现什么问题。

1 个答案:

答案 0 :(得分:7)

您不能单独将Tempfile对象传递给#attach。您必须传递包含开放:io:filename:content_type的哈希:

@service_request.data_file.attach(io: temp_file, filename: "data.json", content_type: "application/json")

有关其接受的参数的详细信息,请参阅the docs了解#attached