Вы можете определить файл как ресурс в маршрутизации рельсов.Тогда у вас есть RESTful маршруты.Для рельсов не имеет значения, есть ли у вас файл или база данных.RESTful маршруты одинаковы.Уникальным идентификатором ваших файлов может быть уникальное имя файла: "/files/file.pdf".
Я бы предложил вам использовать абстракцию для выполнения операций над файловой системой (например, объектно-реляционное отображение для базы данных).доступ).Я мог бы подумать о carrierwave например.Он обрабатывает загрузку файлов и обеспечивает основные операции, такие как удаление / уничтожение.Также он позволяет вам изменить объем хранилища (файл, gridfx, amazon s3).
Я не уверен, что вы имеете в виду с различными экземплярами файлового менеджера.Можно было бы определить файловый менеджер для каждого пользователя.Например, с помощью carrierwave вы можете определить пользовательские каталоги хранения:
# mount uploader in user class
class User
mount_uploader :file, UserUploader
end
# define user uploader
class UserUploader < CarrierWave::Uploader::Base
def store_dir
# model = user object as the uploader
# is mounted in the user class
'public/uploads/#{model.id}'
end
end
Надеюсь, у вас есть идея!