在我的 Rails 应用程序中,两个实体之间有一个相当标准的 has_many 关系。 AFoo
有零个或多个Bars
; a Bar
恰好属于一个Foo
。 Foo 和 Bar 均由单个整数 ID 值标识。这些值在其各自的所有实例中都是唯一的。
Bar 的存在依赖于 Foo:没有 Foo 的 Bar 是没有意义的。
有两种方法可以 RESTful 引用这些类的实例。给定 Foo.id 为“100”和 Bar.id 为“200”:
-
通过它们自己的“顶级”URL 路由引用每个 Foo 和 Bar,如下所示:
-
通过其 Foo 实例将 Bar 引用为嵌套资源:
我喜欢#2 中的嵌套路由,因为它更接近地代表实体之间的实际依赖关系。然而,它似乎确实涉及大量额外的工作却收效甚微。假设我知道某个特定的 Bar,那么我不需要被告知特定的 Foo;我可以从酒吧本身得出这一点。事实上,我可能应该在我去的任何地方验证路由的 Foo (这样你就不能执行 /foo/150/bar/200,假设 Bar 200 没有分配给 Foo 150)。最终,我不明白这会给我带来什么。
那么,有没有other支持或反对这两种路由方案的论点?
澄清点
我最关心的是特定 Bar 的 RESTful 更新/显示/删除。为了获取特定 Foo 的 Bar 列表(通常是 Rails 中的“索引”操作),使用嵌套路由(例如 /foo/100/bar)是非常有意义的。不过,此路线上的页面可以像链接到 /foo/100/bar/x 一样轻松链接到 /bar/x 。
您正在寻找浅水路线。正如您所指出的,为创建、更新等内容设置深层嵌套路由的想法是不必要的,因为您直接针对所需的记录。
我从来没有真正做过浅层路由的事情,所以我会跳过 Railscast 的那一集,其中 Ryan Bates 的解释可能比我更好:139 嵌套资源 http://railscasts.com/episodes/139-nested-resources.
编辑:您可以阅读更多内容路由指南 3.8.4 http://guides.rubyonrails.org/routing.html#nested-resources.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)