ruby-on-rails - 递归 Rails 嵌套资源

标签 ruby-on-rails ruby

我有一个用于项目管理的 Rails 应用程序,其中包含项目和任务模型。一个项目可以有很多任务,但一个任务也可以有很多任务,无穷无尽。

使用嵌套资源,我们可以有/projects/1/tasks、/projects/1/tasks/new、/projects/1/tasks/3/edit 等。

但是,您如何以 REST 方式表示任务的递归性质?我不想再深入一点,所以也许可以执行以下操作:

map.resources :tasks do |t|
    t.resources :tasks
end

这会给我以下网址:

/tasks/3/tasks/new   
/tasks/3/tasks/45/edit

或者当涉及到单个任务时,我可以使用/tasks/45/edit

这样的设计合理吗?

凸轮

最佳答案

超出单个嵌套路由的任何地方通常被认为是一个坏主意。

来自 The Rails Way 的第 108 页:

"Jamis Busk a very influential figure in the Rails community, almost as much as David himself. In February 2007, vis his blog, he basically told us that deep nesting was a _bad_ thing, and proposed the following rule of thumb: Resources should never be nested more than one level deep."

现在有些人会对此提出异议(在第 109 页讨论),但是当您谈论嵌套任务与任务时,它似乎没有多大意义。

我会以不同的方式处理您的解决方案,就像上面提到的那样,一个项目应该有很多任务,但是一个任务有很多任务似乎不正确,也许应该将这些重命名为子任务或类似的东西。

关于ruby-on-rails - 递归 Rails 嵌套资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/174190/

相关文章:

ruby - Ruby 中优雅的日期解析

ruby-on-rails - 在 ActiveRecord 中

ruby-on-rails - 使用 div 作为提交按钮

ruby-on-rails - Friendly_id为Rails中的多个对象创建重复的slugs

ruby-on-rails - 如何显示关联记录子集的表单,其中一些尚不存在?

ruby - 在使用 Nokogiri 和 Rails 时遇到问题

ruby-on-rails - 在 Rails 中验证 pdf 的数字签名时出现 Origami 和 OpenSSL 错误

ruby-on-rails - RubyGems 安装错误的代码

ruby - 删除散列中不在数组中的键

ruby-on-rails - Rails 3 迁移 : Adding reference column?