Ошибка прикрепления файла с ActiveStorage «Не удалось найти или создать большой двоичный объект: ожидаемый прикрепляемый» получил ActionDispatch::Http::UploadedFile

#ruby-on-rails #rails-activestorage

#ruby-on-rails #rails-activestorage

Вопрос:

Я пытаюсь сохранить изображение из плагина редактора. параметры:

 <ActionController::Parameters {"file"=>[#<ActionDispatch::Http::UploadedFile:0x00007fa78416dfe0 @tempfile=#<Tempfile:/var/folders/gt/k_vyp2g13zl7l89pzl9y44vc0000gp/T/RackMultipart20200918-91605-ob1sq1.jpg>, @original_filename="folk.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name="file[]"; filename="folk.jpg"rnContent-Type: image/jpegrn">], "controller"=>"admin/medias", "action"=>"create"} permitted: false>
  

Итак, в моем действии я создаю свою запись с вложением

 @media = Media.new
@media.file = params[:file]
# @media.file.attach params[:file]  # same error
@media.save!
  

Я получаю сообщение об ошибке:

 ArgumentError Exception: Could not find or build blob: expected attachable, got [#<ActionDispatch::Http::UploadedFile ..
  

Как я могу прикрепить отправленный файл к записи @media?

Ответ №1:

Отправленный массив params[:file] файлов.

Если редактор действительно может загружать несколько изображений, убедитесь, что ваш Media класс настроен на использование has_many_attached , а не has_one_attached .

Если он должен загружать только одно изображение, либо измените редактор, либо используйте первый элемент в массиве.