#ruby-on-rails
#ruby-on-rails
Вопрос:
Может ли ActiveStorage сохранить файл в сеансе / браузере, чтобы сразу использовать его для рендеринга PDF, а затем забыть?
В настоящее время пользователь заполняет форму, добавляет фотографию, и мы сохраняем фотографию в облаке только для одноразового использования, а затем удаляем облачную фотографию.
Ответ №1:
На самом деле вам не нужен ActiveStorage только для того, чтобы принимать загрузки файлов через форму:
<%= form_with(url: {action: :upload}, multipart: true) do %>
<%= file_field_tag 'picture' %>
<% end %>
<%= form_with model: @person do |f| %>
<%= f.file_field :picture %>
<% end %>
При отправке формы в параметрах будет указан экземпляр ActionDispatch::Http::UploadedFile:
params[:picture]
params[:person][:picture]
На самом деле это просто оболочка fancypants вокруг экземпляра Tempfile, и, таким образом, она сама отключится, когда rails выполнит запрос.
Загрузка в белый список действительно проста, поскольку ActionDispatch::Http::UploadedFile
является одним из разрешенных скалярных типов:
params.require(:person).permit(:picture)
Весь смысл ActiveStorage на самом деле не в загрузках — он предоставляет множество бэкэндов, чтобы вы могли прикреплять загруженные файлы к моделям и сохранять их с минимальными усилиями. Если вы не сохраняете загруженные файлы, это действительно просто раздувание.