Как написать RESTful файловый менеджер? - PullRequest
0 голосов
/ 28 февраля 2011

сегодня у меня прямая проблема: P мне просто нужны идеи ... Как бы вы написать RESTful файловый менеджер в рельсах?

Я хочу использовать файловый контроллер, который выполняет все операции с файлами. Теперь, когда я делаю это спокойно, есть только несколько функций:

  • создать (создать файл / каталог)
  • уничтожить (удалить файл / каталог)
  • index (список каталогов)
  • show (показать свойства файла)
  • edit (переименовать файл / каталог)

теперь я не знаю, как скопировать / переместить файл ... и когда я хочу, чтобы у пользователя было несколько экземпляров этого файлового менеджера, как мне сделать так, чтобы он находился в разных каталогах? (есть разные экземпляры моего файлового менеджера за один сеанс)

Может кто-нибудь просто дать мне несколько советов? : P

1 Ответ

0 голосов
/ 28 февраля 2011

Вы можете определить файл как ресурс в маршрутизации рельсов.Тогда у вас есть 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

Надеюсь, у вас есть идея!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...