ruby-on-rails - 基于数据库的文件系统的 Rails 实现

标签 ruby-on-rails ruby filesystems

因为“文件系统”和“rails”是这样的共同主题,无论是在一起还是分开,我都找不到任何 Ruby on Rails在数据库中实现文件系统的开源应用程序。我想使用这样的应用程序作为起点或模板。

我已经能够实现 UserDirectory 模型(后者使用 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,但您可以通过查看项目(混合、插件等)获益,例如:

对于文件上传'n 存储 部分,除了已经提到的Paperclip 之外,我建议查看carrierwave本身提供基于“fog” gem 的存储(支持使用 AWS、Google、Local 和 Rackspace 存储文件),但您可以选择利用 carrierwave-activerecord 的数据库(例如 sqlite)存储

关于实现 View 部分的提示

关于您可能感兴趣的“ View ”this answer关于jQuery File Tree用于 jQuery 和 dnamique blog 的可配置 AJAX 文件浏览器插件它有一个用于此插件的 Rails 连接器以及关于它的来源演示

作为替代方案,查看下一节中提到的应用程序的实现(源代码)。

此类应用程序的链接

这里有一些“文件管理器”感兴趣:

  • Boxroom
  • Saphyra (作为可安装的引擎提供)
  • 基于 Rails 的 CMS 可能有一些有趣的代码

关于ruby-on-rails - 基于数据库的文件系统的 Rails 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16596763/

相关文章:

ruby-on-rails - rails 4 : combining has_many :through association with polymorphic association

html - nil 无法转换为 Time 值

ruby-on-rails - 在docker-compose中配置后如何使MySQL容器在后台运行

ruby-on-rails - 从多个数组项返回字符串

mysql - 简单 Rails SQL 错误

ruby - 如何获取用 | 分隔的字符串或者 ,

ruby-on-rails - Rails to_json 包含多个 belongs_to 和 has_many 引用

unix "find"命令 native 排序顺序

linux - 如何使 squash 文件系统可读写

java - android 写入磁盘不可靠 - 写入 file.length !=expected.length