Как использовать хранилище для загрузки файла без активной записи в Rails 5? - PullRequest
0 голосов
/ 30 октября 2018

Я программист PHP и недавно начал работать с ROR.
В PHP + Laravel есть довольно удобная реализация для загрузки файлов, что-то вроде

Storage::disk('my_sftp_server')->put('hello.txt', 'Hello World');

https://laravel.com/docs/5.7/filesystem
Где my_sftp_server был установлен в версии Laravel storage.yml файла.

Поскольку Laravel сильно основан на Rails, я думаю, что должен быть похожий способ сделать это с Rails. Но когда я ищу Rails Storage в Google, все результаты связаны с ActiveStorage, и в моем случае мои файлы не имеют прямого отношения к моим активным записям.

Есть ли способ использовать уже установленное хранилище Rails для загрузки файла?

Причина:

Я разрабатываю систему доставки, и в конце дня мне нужно создать консолидированный отчет и сохранить его на сервере-перевозчике с использованием SFTP.

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

То, что вы спросили, не очень хороший подход. Причина проста: всякий раз, когда вы сохраняете данные во внешнем хранилище, вы должны определить различные параметры, такие как разрешение, ключи и т. Д.

Позвольте мне привести вам пример: вы сейчас храните пользовательские документы, позже вы храните разные документы, изображения, относящиеся к другому объекту. Даже если вы отказываетесь предоставить такую ​​актуальность, Rails полностью основан на объектно-ориентированном программировании. Таким образом, вы должны дать ссылку на объект для любого документа, который вы храните, чтобы вы могли получить его правильно.

Скрепка для бумаг является одним из драгоценных камней, используемых для него.

Чтобы сохранить его в локальном пути приложения,

 @user.document.copy_to_local_file(nil, path)

Здесь в приведенном выше документе может быть поле не-db для пользователя, созданное attr_accessor. copy_to_local_file - это метод скрепки.

0 голосов
/ 30 октября 2018

Вы можете просто записать элемент params на диск:

IO.copy_stream(params[:files][0].tempfile, local_filepath)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...