Shrine:: Ошибка: хранилище: кэш не зарегистрирован в FileUploader
Я использую Mongoid 6.0.3, ruby 2.3.1 и rails 5.2
Я создал класс file_uploader для обработки своих загрузок, используя shrine.
/app/uploaders/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
1 ответ
Решение
Усыпальница uses :file
как анализатор типов файлов по умолчанию. После изменения на :mime_types
в инициализаторе shrine, это сработало.
Я должен был сделать следующее, чтобы это исправить:
По предложению @ashusvirus
model.rb
старый код
include ImageUploader::Attachment.new(:file)
новый код
include ImageUploader::Attachment.new(:mime_types)
Кроме того, я использовал ActiveRecord вместо Sequel или Mongoid, поэтому мне пришлось также изменить следующее:
конфиг /shrine.rb
старый код
Shrine.plugin :sequel
новый код
Shrine.plugin :activerecord