Shrine :: Ошибка: хранилище: кэш не зарегистрирован в FileUploader - PullRequest
0 голосов
/ 11 сентября 2018

Я использую Mongoid 6.0.3, ruby ​​2.3.1 и рельсы 5.2

Я создал класс file_uploader для обработки своих загрузок с использованием shrine.

/ приложение / закачивающие / file_uploader.rb

class FileUploader < Shrine
    Attacher.validate do
        validate_max_size 5.megabytes, message: 'is too large (max is 5 MB)'
        validate_mime_type_inclusion %w(application/pdf image/png 
application/plain text/plain text/plain application/excel application/x- 
excel image/jpeg)
    end
end

конфиг / Инициализаторы / Shrine.rb

require "shrine"
require "shrine/storage/file_system"
Shrine.storages = {
        cache: Shrine::Storage::FileSystem.new("public", prefix: 
"uploads/cache"), # temporary
        store: Shrine::Storage::FileSystem.new("public", prefix: "uploads"), #     permanent
}
Shrine.plugin :mongoid
Shrine.plugin :validation_helpers

Но я получаю ошибку при сохранении данных,

В моей модели это называется

include FileUploader::Attachment.new(:file)
field :file_data

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Мне нужно было сделать следующее, чтобы это исправить:

Как подсказывает @ ashusvirus

model.rb

старый код

include ImageUploader::Attachment.new(:file)

новый код

include ImageUploader::Attachment.new(:mime_types)

Кроме того, я использовал ActiveRecord вместо Sequel или Mongoid, поэтому мне пришлось также изменить следующее:

config / shrine.rb

старый код

Shrine.plugin :sequel

новый код

Shrine.plugin :activerecord
0 голосов
/ 18 октября 2018

Shrine uses :file в качестве анализатора типов файлов по умолчанию.После изменения его значения на :mime_types в инициализаторе shrine, оно заработало.

...