Загрузите несколько файлов с помощью CarrierWave как отдельные записи в базе данных - PullRequest
1 голос
/ 26 мая 2020

Извините, но я застрял. Как я могу загрузить несколько файлов с помощью CarrierWave и сохранить их один за другим? Я не хочу иметь массив с несколькими файлами, но каждый файл нужно сохранять индивидуально. У меня есть форма, которая принимает несколько файлов. Но я только нахожу способы сохранить всю загрузку как одну запись. Как я могу создавать отдельные объекты из параметров с несколькими файлами?

Спасибо за любую помощь!

EDIT:

Вот мой контроллер:

class ImagesController < ApplicationController
  def new
    @image = Image.new
  end

  def create
    @image = Image.new(image_params)
    if @image.save
      flash[:primary] = "Image uploaded"
      redirect_to images_path
    else
      render 'new'
    end
  end

  def index
    @images = Image.all
    @categories = Category.all
  end

  private
  def image_params
    params.require(:image).permit({image: []}, :image_title, :image_file_size,  :image_content_type, :image_description, :category_id, :image_creation_date, :image_uploader)
  end
end

Этот код работает. Проблема в том, что я не знаю, как перебирать параметры. Однако я могу получить доступ к отдельным параметрам. Но я не могу хранить их по одному.

Вот моя пробная версия:

  def create
    image_params['image'].each do |img|
      @image = Image.new(img)
      @image.save
    end
    redirect_to images_path
  end

Ошибка:

ArgumentError Exception: When assigning attributes, you must pass a hash as an argument, ActionDispatch::Http::UploadedFile passed.

Я понимаю, что не есть ha sh, но только отдельные файлы и это ошибка. Но я не знаю, как еще это сделать.

...