2011-02-28 7 views
0

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

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

  • создать (создать файл/каталог)
  • разрушающие (удаление файла/каталога)
  • индекс (список каталога)
  • шоу (показать свойства файла)
  • редактировать (переименовать файл/папку)

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

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

ответ

0

Вы можете определить файл как ресурс в маршрутизации рельсов. Затем у вас есть маршруты RESTful. Для рельсов это не имеет значения, если у вас есть файл или ресурс базы данных. Маршруты RESTful те же. Уникальным идентификатором ваших файлов может быть уникальное имя файла: «/files/file.pdf».

Я предлагаю вам использовать абстракцию для выполнения операций над файловой системой (например, объектно-реляционное сопоставление для доступа к базе данных). Например, я мог бы думать о carrierwave. Он обрабатывает загрузку файлов и предоставляет основные операции, такие как delete/destroy. Также он позволяет вам изменять объем хранилища (файл, 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 

Я надеюсь, что вы получите идею!

+0

, значит, вы хотите использовать файлы в качестве ресурсов? или файл как ресурс? : P, когда я использую его как ресурс, я мог бы использовать функцию индекса, чтобы получить содержимое каталога с индексом;) – klump

+0

и с разными экземплярами я имел в виду проблему, что, когда я просто использую файл как ресурс, тогда мне нужно сохранить текущий каталог в переменной session. это затруднит работу с разными экземплярами менеджера за один сеанс ... спасибо за подсказку с настраиваемыми дисками хранения;) – klump

+0

Я имел в виду «файл как ресурс» только [определение ресурса] (http: // guide.rubyonrails.org/routing.html#resource-routing-the-rails-default) в маршрутизации rails. Файл - это не что иное, как ресурс. Можете ли вы привести пример для разных случаев? Вы пытаетесь построить что-то вроде FTP-клиента? –

Смежные вопросы