Ruby on rails rails-创建类似路线的最佳实践?

Ruby on rails rails-创建类似路线的最佳实践?,ruby-on-rails,Ruby On Rails,在我的应用程序中,一个用户可以发表帖子,一个用户可以对另一个用户的帖子进行更正(将其视为评论)。每个用户可以有许多帖子,每个帖子可以有许多更正 在每一篇文章的展示页面上,都有一个创建新更正的表单。这使用user\u post\u corrections路径 在每个用户的显示页面上,我想显示他们为任何帖子提交的每个更正。这需要一个用户路径 为了实现这一点,我的routes.rb中包含以下内容: resources :users do resources :posts do re

在我的应用程序中,一个用户可以发表帖子,一个用户可以对另一个用户的帖子进行更正(将其视为评论)。每个用户可以有许多帖子,每个帖子可以有许多更正

在每一篇文章的展示页面上,都有一个创建新更正的表单。这使用
user\u post\u corrections
路径

在每个用户的显示页面上,我想显示他们为任何帖子提交的每个更正。这需要一个
用户路径

为了实现这一点,我的routes.rb中包含以下内容:

resources :users do
    resources :posts do
      resources :corrections
      end
    end

    resources :users do
      resources :corrections
    end
这让我感觉很糟糕,因为我创建了两个彼此非常相似的嵌套路由

有更好的方法吗?我的代码运行良好,但是否有实现此类模型的最佳实践方法?

是一个优秀但未充分使用的工具,用于干燥路线:

concern :correctable do
  resources :corrections
end

# just an example of multiple concerns
concern :commentable do
  resources :comments
end

resources :users, concerns: :correctable
resources :posts, concerns: [:correctable, :commentable]
但是,在创建嵌套管线时应采取以下措施,以避免不必要的嵌套

通常,您可能希望集合操作
[新建、索引、创建]
的范围由父级确定:

GET|POST  /posts/:post_id/corrections
GET       /posts/:post_id/corrections/new
虽然希望成员操作不受范围限制,但如果记录具有唯一id,则始终可以直接访问该记录

GET    /corrections/:id
GET    /corrections/:id/edit
PATCH  /corrections/:id
DELETE /corrections/:id
要执行此操作,请按如下方式声明路由:

resources :corrections, only: [:show, :update, :edit]

concern :correctable do
  resources :corrections, only: [:new, :index, :create]
end

resources :users, :posts, concerns: [:correctable]
shallow:true
选项执行类似的操作,但在多次声明相同的
资源时效果不佳,因为它会为每个调用添加非范围路由