我有一個名爲Organization
的模型。它在app/models/organization.rb
Rails NameError未初始化常量(模型和名稱空間碰撞)
class Organization < ActiveRecord::Base
... code
end
定義我有一個名爲Admin::Organization::ActivitiesController
控制器。它在app/controllers/admin/organization/activities_controller.rb
中定義。它有一個索引操作。
class Admin::Organization::ActivitiesController < ApplicationController
def index
@organization = Organization.new
... more code
end
end
我收到以下消息時,我執行上述指標的行動:
NameError in Admin::Organization::ActivitiesController#index
uninitialized constant Admin::Organization::ActivitiesController::Organization
出於某種原因,它的作用域控制器類內部的組織模式。如果我改變index
方法使用
@organization = ::Organization.new
然後它工作正常。
此行爲似乎不出現在pry控制檯中。如果我在索引方法中添加binding.pry
調用,那麼我可以在命令行中調用Organization.new
或::Organization.new
它工作正常。
應用程序中的每個其他模型都能正常工作,並且沒有這種奇怪的行爲。我最初沒有編寫代碼,所以我試圖弄清楚發生了什麼。
我認爲它可能與route.rb文件中的命名空間有關。有一個名稱空間使用organization
字。
namespace :admin do
namespace :organization
resources :activities
end
end
作爲測試,我改變了命名空間:organizations
,我能得到的東西,而無需::
工作。有沒有一種方法來組織結構或路由設置,所以我們可以有一個名稱空間:organization
,它不會影響名爲Organization
的模型?
只是爲了澄清,當你說「的代碼休息」,你的意思是你看到當您嘗試啓動應用程序或調用'ActivitiesController#index'方法時出錯? – seddy
執行'ActivitiesController#index'動作時會中斷。我更新了這個問題。 – CodeSmith