我有一个称为Admin的模型,我想创建一个具有相同名称的名称空间。当我这样做时,Admin is not a module
就会被提出。有没有一种方法可以指定路线或解决该问题的另一种方法?
管理员是设计模型。
routes.rb中的名称空间:
namespace :admin do
resources :buildings
end
还有控制器controllers/admin/buildings_controller.rb
module Admin
class BuildingsController < Admin::AdminController
before_action :authenticate_admin!
答案 0 :(得分:1)
您面临的问题不是特定于路由的,而是特定于Ruby的。 Rails模型是Ruby类。您不能在相同的上下文中使用相同名称的class
和module
。
听起来Devise's new Multi-User Models是您的追随对象?
或者,您可以做的是将自定义管理控制器保留在不同的名称空间(例如Administration
)中,并将/admin/buildings
CRUD路由到您的自定义名称空间:
scope path: "/admin", as: "admin", module: 'administration' do
resources :buildings
end