当我们将 url 写为 /posts/:id/comments 时,我们将评论映射到帖子只能找到相应的评论:-
@post = Post.find(params[:post_id])
@comments = @post.comments
但是可以说评论与标签和帖子具有多态关联,可以称为:
/posts/:id/comments
/tags/:id/comments
现在在 Posts#index 中,我不知道它是用标签调用还是作为封闭资源发布,rails 中有没有可以自动找到它的方法?,就像在资源控制器插件中一样,我们有一个名为enclosing_resource的方法,它将为您提供特定的帖子或标签资源,并且可以用作:-
@comments = enclosing_resource.comments
我可以通过检查 params 是否包含 post_id 或 tag_id 来做到这一点,但这不是正确的方法,而且看起来也不好看,因为我们也增加了与其他模块的多态关联。