Присоединение 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 для получения дополнительной информации об аргументах, которые он принимает.

Другие вопросы по тегам