假设我在 Rails 中有原型博客应用程序。我会有一个有很多评论的帖子模型。我的 routes.rb 可能看起来像这样:
resources :post do
resources :comment
end
这意味着例如评论的编辑路径如下所示/post/21/comment/42/edit
:当我们在两个模型之间有很多/属于关系时,这似乎是有道理的。然而,一旦你注意到帖子的 id 并不是真正需要找到评论(甚至帖子),它就开始变得不那么有意义了。
要明白我的意思,请考虑控制器中编辑操作的这两个等效实现:
# Nested resource version
def edit
@post = Post.find(params[:post_id])
@comment = @post.comments.find(params[:id])
# ...
end
对比
# Un-nested resource version
def edit
@comment = Comment.find(params[:id])
@post = @comment.post
# ...
end
我的问题是:有没有我没有考虑过的用例?还是嵌套资源只适合制作漂亮的 URL?