2015-06-25 48 views
7

我有一些軌道引擎 '核心',我有:Rails的發動機自動加載的擔憂路徑

# core/app/models/core/concerns/user_helper.rb 
module Core 
module UserHelper 
    extend ActiveSupport::Concern 
    included do 
    # some methods 
    end 
end 
end 

# core/app/models/core/user.rb 
module Core 
class User < ActiveRecord::Base 
    include Core::UserHelper 
end 
end 

但是它說未初始化的常量核心:: UserHelper。如此看來引擎默認不加載其顧慮,所以我增加了它的自動加載路徑

module Core 
    class Engine < ::Rails::Engine 
    config.autoload_paths += %W(#{Core::Engine.root}/app/models/core/concerns) 
    isolate_namespace Core 
    end 
end 

現在我結束了這個錯誤:無法自動加載不斷UserHelper,預計MYAPP /核心/應用/ models/core/concern/user_helper.rb來定義它

那麼這裏有什麼問題?當我檢查指南http://edgeguides.rubyonrails.org/engines.html,它沒有關注目錄中的問題,而是在lib /關注下,並且都提到了使用Core :: Concerns :: MyConcern時的擔心,那麼在哪裏將關注點放在引擎中呢?

感謝

編輯

尤里評論解釋這個問題,似乎在軌引擎的擔憂目錄沒有得到任何特殊待遇,它被視爲下一個車型普通的目錄,所以其中的模塊必須位於Concerns名稱空間內,如果我理解正確,在包含關注點時,還必須將其包含在Concerns namesapace中。我很驚訝這在文檔中沒有提及。

+4

我認爲這個模塊應該被命名爲Core :: Concerns :: UserHelper,它可以留在'app/models/concerns'目錄中 –

+0

似乎解決了這個問題,另一個問題引發了但我不認爲它是另一個問題,非常感謝:) –

+0

沒問題,很高興幫助:) –

回答

13

問題必須存在於app/models | controllers/concern/engine_name/concern_name.rb中。這會自動加載問題。

要包括關注,請包括EngineName :: ConcernName。