Присоединение Tempfile с ошибкой ActiveStorage
Я не могу присоединить JSON Tempfile к модели, используя Active Storage в сервисном объекте. Это легко повторить:
Модель:
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 ответ
Решение
Вы не можете передать объект Tempfile в одиночку #attach
, Вы должны передать хэш, содержащий открытый :io
, :filename
и :content_type
:
@service_request.data_file.attach(io: temp_file, filename: "data.json", content_type: "application/json")
Смотрите документы для #attached
для получения дополнительной информации об аргументах, которые он принимает.