1

假设我在 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?

4

0 回答 0