因为“文件系统”和“rails”是这样的共同主题,无论是在一起还是分开,我都找不到任何在数据库中实现文件系统的
Ruby on Rails开源应用程序.我想使用这样的应用程序作为起点或模板.
我已经能够实现用户和目录模型(后者使用Ancestry),我正在使用文件模型(我的应用程序只需要一种文件).
class User < ActiveRecord::Base attr_accessible :email,:name,:password,:password_confirmation has_secure_password has_many :directories,dependent: :destroy # ... end # class User class Directory < ActiveRecord::Base attr_accessible :name,:parent_id has_ancestry belongs_to :user has_many :files,dependent: :destroy # ... end # class Directory # not actually implemented,yet class File < ActiveRecord::Base attr_accessible :name belongs_to :directory # ... end # class File
在视图中我使用jsTree来呈现树和一个表单来添加/删除,编辑……这需要更改为使用AJAX,因为重定向回同一页面不会保留树的展开/折叠状态.
然而,我有这种唠叨的感觉,我正在做一些已经做过很多次的事情.您能否提供有关此类应用程序的链接或提供有关实现模型部分和视图部分的提示?
解决方法
关于实现模型部分的提示
为了将模型组织为树结构,tecnique被称为Nested set model,因此一个通用名称(有助于谷歌搜索等)可能是“Activerecord嵌套”;-)
您对祖先的选择是受欢迎的,但您可以看看项目(混合,插件,……),例如:
> act_as_nested_set
> Better nested set
> act_as_a_tree
> Closure Tree
> Arboreal
对于文件上传’n商店部分我建议,除了已经提到的Paperclip之外,看看carrierwave本身提供了一个基于“雾”宝石的存储(支持使用AWS,Google,Local和Rackspace存储文件)但是您可以选择利用carrierwave-activerecord的数据库(例如sqlite)存储
关于实现视图部分的提示
关于“视图”您可能对this answer jQuery File Tree jQuery和dnamique blog的可配置AJAX文件浏览器插件感兴趣,该插件有一个用于此插件的rails连接器以及有关它的源和演示.
作为替代方案,请查看下一节中提到的应用程序的实现(源代码).
这些应用程序的链接
这里有一些感兴趣的“文件管理器”: