我在我的項目目錄中有一個common
文件夾,我們在項目之間共享某些類(使用其他技術作爲引擎不是我們此時的選項)。我們在該文件夾中有「複製」項目結構,因此我們有一些路徑,如common/app/models
,common/lib
等)。要加載所有的模型,我們使用:從共享代碼文件夾中的模型擴展行爲
config.autoload_paths += %W(
#{config.root}/common/app/models
#{config.root}/lib
)
但現在我需要以某種方式之一的行爲對類擴展的common/app/models
文件夾中。
我的第一選擇是在常規應用模型文件夾中創建一個新的ExtendedModel
,從SharedModel
繼承,記錄遷移到新的模型,然後將類似ExtendedModel = SharedModel
一個初始化內。它會工作,但似乎有點棘手。
我的第二個選擇是在應用程序模型文件夾中創建一個新模型,其名稱與SharedModel
和其他方法相同,但Rails似乎忽略了此模型,並且它僅使用了SharedModel
。
任何想法,將不勝感激:)
Ruby允許你動態地擴展類,所以不應該有這個問題。所以,我的建議是進入命令行(rails c)加載你的模型擴展定義,並檢查一個新的實例是否有這個新的方法。 – tomsoft 2014-10-10 12:20:57
這聽起來對我來說過於複雜。此外,自動加載部分與此有什麼關係?不是關於繼承和混搭嗎? – phoet 2014-10-10 13:06:13
@tomsoft我已經試過這個,並且該方法沒有加載。我找到了解決方法,我會回答我的問題。 – 2014-10-11 09:18:40