Сохраните значение в поле типа строки, которое хранит значение в виде массива - PullRequest
0 голосов
/ 15 мая 2019

Я создаю рейк-дубль для импорта нескольких вложений, и единственная проблема, которую я не могу выяснить, - это как сохранить имя файла в поле документов, так как оно сохраняет имя файла в виде массива.

Это то, что я пытаюсь сделать,

upload.rake

require 'fileutils'
namespace :request_document do
  desc "Expects to get a file or folder ..."
  task :import_attachment, [:filename] => [:environment] do |task, args|

    source_directory = "/Users/admin/Documents/demo"

    Dir.foreach(source_directory) do |filename|
      if /^(?<client_id>\d+)/ =~ filename
        puts filename
        client = Client.find_by(
          legacy_client_id: client_id
        )
        if client.nil?
          puts "Client Not Found"
        else
          puts "Client found"
          request = client.requests.last
          # document_uploader = DocumentUploader.new
          # File.open("#{source_directory}/#{filename}") { |f| document_uploader.store!(f) }
          # document_uploader.store!("#{source_directory}/#{filename}")
          target_directory = "public/uploads/request/documents/#{request.id}"
          puts request.id
          FileUtils.mkdir_p(target_directory)
          FileUtils.cp("#{source_directory}/#{filename}", "#{target_directory}")
          request.documents.push(['filename'])
          request.save
        end
      end
    end 
  end
end

схема для запроса

create_table "requests", force: :cascade do |t|
  t.string "documents", default: [], array: true
end

Я использую самоцвет для несущей для загрузки нескольких изображений.

Я получаю ошибку:

NoMethodError: undefined method `identifier' for ["filename"]:Array

1 Ответ

0 голосов
/ 16 мая 2019

Я видел это однажды с несущей волной раньше. Мне потребовалось целую вечность, чтобы понять это, но между атрибутом модели и точкой монтирования несущей волны было некоторое дублирование. По репертуру carrierwave закрыта проблема со ссылкой здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...