型号名称和名称空间

时间:2018-12-07 14:07:36

标签: ruby-on-rails

我有一个称为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!

1 个答案:

答案 0 :(得分:1)

您面临的问题不是特定于路由的,而是特定于Ruby的。 Rails模型是Ruby类。您不能在相同的上下文中使用相同名称的classmodule

听起来Devise's new Multi-User Models是您的追随对象?

或者,您可以做的是将自定义管理控制器保留在不同的名称空间(例如Administration)中,并将/admin/buildings CRUD路由到您的自定义名称空间:

scope path: "/admin", as: "admin", module: 'administration' do
  resources :buildings
end