2013-01-15 46 views
2

我有一個文件在我的Rails 3.2.11項目稱爲app/queries/visible_discussions.rb看起來像下面這樣:Rails 3的麻煩命名空間和自定義類(未初始化的常數)

class VisibleDiscussions 
    ... 
end 

我想命名空間查詢,以便我可以使用類似Queries::VisibleDiscussions叫它所以我試圖做到以下幾點:

module Queries 
    class VisibleDiscussions 
    ... 
    end 
end 

但是,我得到一個uninitialized constant Queries (NameError)當我嘗試調用從鐵軌控制檯Queries::VisibleDiscussions

任何想法?

回答

3

如果添加lib您autoload_paths那麼它將尊重命名空間下的lib - lib/query/visible_discussions.rb

或在應用程序創建一個新的目錄 - 說SRC,然後巢您的代碼中有 - app/src/query/visible_discussions.rb

我會用第三樣式在您的文章對其中任意一個,即

module Query 
    class VisibleDiscussions 
    ... 
    end 
end 

這兩種解決方案s很討厭我,可能有辦法告訴欄下的應用程序命名空間目錄,但我不知道它將如何完成

+0

啊gotcha。說得通。煩人。謝謝! =) –

+0

此外,我認爲目錄名稱需要匹配模塊名稱。上面的例子稍微偏離,如果目錄是複數,那麼模塊應該也是 – house9

+0

是的。想出了那一個。 =) –

0

Rails需要知道要加載的目錄(缺省部分)。嘗試:

#config.application.rb 
config.autoload_paths += %W(#{config.root}/queries) 
+1

試過。沒有骰子。無論如何,Rails 3.8+自動加載應用程序目錄中的文件。 –

相關問題