在 Rails 中使用嵌套资源路由时我注意到的一件事是,从技术上讲,用户可以访问子资源存在的路由(因此可以正确显示),但是父资源的 id 表示一个对象实际上与子资源无关。
例如,在路由users/:user_id/post/:id
中,用户可以输入一个路由,其中:user_id
表示没有发布对应于 的帖子的用户:id
。
解决此问题的最佳方法是什么,以便如果用户访问无效的 URL,服务器会将用户重定向到正确的 URL?
我已经在我的控制器中放置了一些代码来处理这个问题,但是必须检查每个控制器操作中的路径然后将用户重定向到适当的 url,这有点尴尬,特别是因为每个操作的 URL 帮助程序都不同。
( edit_user_post_path(@user, @post)
, new_user_post_path(@user, @post)
)
必须有更好的方法,对吧?