檔名和自動載入
Rails 檔案 - 以及一般的 Ruby 檔案 - 應該用 lower_snake_case
檔名命名。例如
app/controllers/application_controller.rb
是包含 ApplicationController
類定義的檔案。請注意,雖然 PascalCase
用於類和模組名稱,但它們所在的檔案仍然應該是 lower_snake_case
。
一致的命名很重要,因為 Rails 根據需要使用自動載入檔案,並使用變形在不同的命名樣式之間進行轉換,例如將 application_controller
轉換為 ApplicationController
然後再轉換回來。
例如,如果 Rails 發現 BlogPost
類不存在(尚未載入),它將查詢名為 blog_post.rb
的檔案並嘗試載入該檔案。
因此,為檔案命名它們包含的內容也很重要,因為自動載入器需要檔名匹配內容。例如,如果 blog_post.rb
包含一個名為 Post
的類,你會看到一個 LoadError
:Expected [some path]/blog_post.rb to define BlogPost
。
如果你在 app/something/
下新增一個目錄(例如/ models / products /),和
- 想要在新目錄中命名模組和類,那麼你不需要做任何事情,它將被自己載入。例如,在
app/models/products/ you would need to wrap your class in
module Products`中。 - 不想在我的新目錄中命名模組和類,然後你必須將
config.autoload_paths += %W( #{config.root}/app/models/products )
新增到你的application.rb
到自動載入。
還有一件需要注意的事情(特別是如果英語不是你的第一語言)是 Rails 在英語中佔不規則複數名詞的事實。因此,如果你的模型名為 Foot
,則相應的控制器需要被稱為 FeetController
而不是 FootsController
,如果你想要使用 rails魔術路由(以及更多此類功能)。