Загрузка файла в Rails - данные - это объект, как мне вернуть его в моем представлении?
-
05-07-2019 - |
Вопрос
При выполнении загрузки в моем проекте Rails база данных сохраняет
--- !ruby/объект:файл content_type:приложение / октетный поток исходный путь:мои.числа
как мне заставить его возвращать мои.numbers только в моем представлении?
Огромное спасибо!Марко
ps.Я не хочу предпочтительно использовать attachment_fu или любой другой плагин.
Решение
Загруженный файл фактически принимается вашим контроллером как файловый объект, а не как данные, поэтому вы несете ответственность за его чтение.Обычно загруженные файлы сохраняются во временном каталоге, и открытый дескриптор файла для него присутствует в параметрах.
Вы могли бы сделать что-то вроде следующего, чтобы извлечь данные:
def create
# Read in data from file into parameter before creating anything
if (params[:model] and params[:model][:file])
params[:model][:file] = params[:model][:file].read
end
@model = MyModel.create(params[:model])
end
Вероятно, вам нужно будет убедиться, что столбец в базе данных может хранить двоичные данные.В миграциях MySQL это тип столбца :binary.
Другие советы
Вы можете получить доступ к имени загруженного файла с помощью вспомогательного параметра original_filename.итак, параметры [:модель][:файл].original_filename