前提:
通常在准备新的Ruby on Rails应用程序时,我会绘制有关用户导航的模型和关系。通常我会去一个我需要问自己的地方,不管我是否应该超越通常的“经验法则”,不再嵌套1级。有时我觉得需要嵌套,而不是创建另一个命名空间路由和复制工作。
这是一个例子:
楷模: 用户,公司,位置
用户拥有并属于许多公司(多对多)
用户拥有并属于许多地点(多对多)
公司拥有并且属于许多地点(多对多)
路线:
1级嵌套
users /:user_id / companies / - 列出与用户相关的所有公司
users /:user_id / locations / - 列出与用户相关的所有位置
超过1级嵌套
users /:user_id / companies /:company_id / locations / - 列出用户的所有公司位置
所以,我的问题是在RoR中嵌套超过1级深度是否合适?是或否?为什么?
我倾向于跟随Jamis Buck的 忠告 并且从不嵌套多个深度。
编辑:
如果你要筑巢超过1级,我会检查新的 浅路 Edge中的功能
我倾向于跟随Jamis Buck的 忠告 并且从不嵌套多个深度。
编辑:
如果你要筑巢超过1级,我会检查新的 浅路 Edge中的功能
users/:user_id/companies/:company_id/locations/
虽然从技术上来说这很好,但是命名的路由助手也不会这样
user_company_location_path( user_id, company_id, location_id )
必须购买第3轮这样的参数是令人讨厌的。任何令人讨厌的东西都可能是一面红旗。
虽然理论上听起来不错,但我发现嵌套多个级别可能会让人感到困惑 - 特别是如果你在不同级别拥有相同的命名控制器(这可能很常见)
例如
user/x/blog/y/profile/z, and
user/x/profile/a
我经常会发现我在一个不同的命名空间中工作,我认为我正在工作。如果他们做类似但不同的事情,它会变得很混乱=)
我目前的应用程序,我去了上周,并删除了大多数嵌套路线。
(当然,YMMV)