我有一个用于项目管理的 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 页:
现在有些人会对此提出异议(在第 109 页讨论),但是当您谈论嵌套任务与任务时,它似乎没有多大意义。
我会以不同的方式处理您的解决方案,就像上面提到的那样,一个项目应该有很多任务,但是一个任务有很多任务似乎不正确,也许应该将这些重命名为子任务或类似的东西。
关于ruby-on-rails - 递归 Rails 嵌套资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/174190/