Rails 中的范围和命名空间路由

Scope and Namespace routes in Rails

提问人:Cleversou 提问时间:7/25/2022 更新时间:8/16/2022 访问量:528

问:

我正在遵循一个关于 DookeeperDevise gems in Rails 的教程,在视频的一点中,作者创建了以下路线:

namespace :api do
 namespace :v1 do
  resources:books
 end
end

scope :api do
 scope :v1 do
  use doorkeeper do
    skip_controllers:authorizations,:applications,:authorized_applications
   end
  end
end

我不太明白命名空间和范围的意义何在......它们相辅相成,或者是分开的东西,为什么我必须使用?

多谢!

Ruby-on-rails 路由 设计 命名空间 Doorkeeper

评论


答:

1赞 Chiperific 8/16/2022 #1

这是一个有用的概述

简而言之(我的强调是后加的):

当您使用 时,它将为指定资源的 URL 路径添加前缀,并尝试在与命名空间相同的模块下找到控制器namespace

在没有任何选项且仅使用范围名称的情况下使用时,它只会更改资源路径scope

因此,当没有具有匹配名称的控制器时,它对于进行路由匹配很有用。scopenamespace

namespace :api do
 namespace :v1 do
  resources:books
 end
end

为您提供“/api/v1/books”的基本路由,但需要Api::V1::BooksController

scope :api do
 scope :v1 do
  use doorkeeper do
    skip_controllers:authorizations,:applications,:authorized_applications
   end
  end
end

提供以“api/v1”开头但不尝试与类匹配的门卫路由。Api::V1::Doorkeeper

评论

1赞 Cleversou 8/17/2022
非常感谢,Chiperific!我现在明白了!