我无法在服务对象中使用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
。不知道这里可能出现什么问题。
答案 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
。