@Jowan

Грамотно ли хранить файлы для скачивания в public директории?

Есть функционал админ-панели, который реализовывает скачивание файла с определенной информацией.
Метод модели, который это реализовывает, выглядит примерно так:
class MyModel
....

def create_and_send_file
   path = "/public/files/info.txt"
  File.open(path, "w+") do |f|
     MyModel.all.each do |obj|
         f.write(obj.name)
    end
  end
    send_file '/public/file/info.txt'
....
end


Правильна ли моя логика?
Или для этих действий вообще лучше создать отдельный контроллер с каким-нибудь экшном типа download_file? Но вопрос о хранении в public директории остается открытым.
  • Вопрос задан
  • 211 просмотров
Решения вопроса 1
@vsuhachev
Вы не написали что хотите получить. Вообще само создание файла разумнее куда-нибудь вынести из контроллера, чтобы было удобно тестировать и запускать из фоновых задач.

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

Как организовать саму отдачу, отдельным контроллером или методом - зависит от обстоятельств. Если нужно отдавать как-то хитро с кэшированием или еще какой-то логикой - лучше вынести в отдельный контроллер. Иначе - метод.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы