加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用单个标识符RESTful嵌套资源路由

发布时间:2020-12-16 19:14:37 所属栏目:百科 来源:网络整理
导读:在我的Rails应用程序中,我在两个实体之间有一个相当标准的has_many关系. Foo有零个或多个条;一个酒吧恰好属于一个Foo. Foo和Bar都由单个整数ID值标识.这些值在所有各自的实例中都是唯一的. Bar的存在依赖于Foo:拥有没有Foo的Bar是没有意义的. 有两种方法可
在我的Rails应用程序中,我在两个实体之间有一个相当标准的has_many关系. Foo有零个或多个条;一个酒吧恰好属于一个Foo. Foo和Bar都由单个整数ID值标识.这些值在所有各自的实例中都是唯一的.

Bar的存在依赖于Foo:拥有没有Foo的Bar是没有意义的.

有两种方法可以RESTful地引用这些类的实例.给定Foo.id为“100”且Bar.id为“200”:

>通过他们自己的“顶级”URL路由引用每个Foo和Bar,如下所示:

> / foo / 100
> / bar / 200

>参考栏通过其Foo实例作为嵌套资源:

> / foo / 100
> / foo / 100 / bar / 200

我喜欢#2中的嵌套路由,因为它更接近地表示实体之间的实际依赖关系.然而,它似乎涉及很多额外的工作,收益很少.假设我知道一个特定的酒吧,我不需要被告知特定的Foo;我可以从Bar本身那里得到它.事实上,我可能应该在任何地方验证路由Foo(这样你就不能做/ foo / 150 / bar / 200,假设Bar 200没有分配给Foo 150).最终,我看不出这给我带来了什么.

那么,是否有任何其他论据支持或反对这两种路由方案?

澄清点

我主要关注特定Bars的RESTful更新/显示/删除.为了获得特定Foo的Bar列表(通常是Rails中的“索引”动作),有一个嵌套路由,如/ foo / 100 / bar,这是完全合理的.这条路线上的页面可以很容易地链接到/ bar / x和/ foo / 100 / bar / x.

解决方法

你正在寻找浅薄的路线.正如您所指出的那样,由于您直接定位所需的记录,因此无需为创建,更新等内容设置深层嵌套路径.

我从来没有真正做过浅路由的事情,所以我会传递一个轨道播放的情节,Ryan Bates解释它可能比我更好:139 Nested Resources.

编辑:您可以在guides for routing 3.8.4上阅读更多内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读