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