我有用户模型和船模型。用户有很多船。船属于用户。我不知道的是,即使我没有嵌套资源,我也可以创建一个登录用户的船。所以我的网址变为。.../boats.new2
(2作为用户ID),它实际上会保存到ID为2的用户。
但据我所知,如果我有嵌套资源,它会变成.../user/2/boats/1.
不是吗?
我没有尝试#edit
任何一个案例,所以不确定使用哪一个及其效果,使用其中任何一个是否还有其他优点,或者嵌套是不是错了?
答案 0 :(得分:1)
Rails中不需要嵌套路由。只要您具有模型中定义的活动记录belongs_to
和has_many
方法以及数据库中的外键,就可以维护船只和用户之间的关系。
通常,如果对象(例如用户和帖子(或船))之间存在明显的关系,则应嵌套资源。它只是让您的用户和API结构更有意义。
在某些情况下,您可能希望将关系嵌套在不同的内容之下,例如类别名称。例如,您的uri模式可能看起来像/sailboats/boats/1
或powerboats/boat/2
。最重要的是,您应该以对项目用户和开发人员合乎逻辑的方式构建路由。