因为“文件系统”和“rails”是这样的共同主题,无论是在一起还是分开,我都找不到任何 Ruby on Rails在数据库中实现文件系统的开源应用程序。我想使用这样的应用程序作为起点或模板。
我已经能够实现 User
和 Directory
模型(后者使用 Ancestry),我正在准备File
模型(我的应用只需要一种文件)。
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
在我使用的 View 中 jsTree显示树和表单以添加/删除、编辑...这需要更改为使用 AJAX因为重定向回同一页面不会保留树的展开/折叠状态。
但是,我有一种挥之不去的感觉,好像我正在做一些已经做过很多次的事情。您能否提供此类应用程序的链接或提供有关实现模型部分和 View 部分的提示?
最佳答案
关于实现模型部分的提示
要将模型组织为树结构,技术称为 Nested set model因此,一个通用名称(有助于谷歌搜索等)可以是 "Activerecord nesting" ;-)
欢迎您选择 Ancestry,但您可以通过查看项目(混合、插件等)获益,例如:
- awesome_nested_set
- act_as_nested_set
- Better nested set
- act_as_a_tree
- Closure Tree
- Arboreal
对于文件上传'n 存储 部分,除了已经提到的Paperclip 之外,我建议查看carrierwave本身提供基于“fog” gem 的存储(支持使用 AWS、Google、Local 和 Rackspace 存储文件),但您可以选择利用 carrierwave-activerecord 的数据库(例如 sqlite)存储
关于实现 View 部分的提示
关于您可能感兴趣的“ View ”this answer关于jQuery File Tree用于 jQuery 和 dnamique blog 的可配置 AJAX 文件浏览器插件它有一个用于此插件的 Rails 连接器以及关于它的来源 和演示。
作为替代方案,查看下一节中提到的应用程序的实现(源代码)。
此类应用程序的链接
这里有一些“文件管理器”感兴趣:
关于ruby-on-rails - 基于数据库的文件系统的 Rails 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16596763/