檔名和自動載入

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 的類,你會看到一個 LoadErrorExpected [some path]/blog_post.rb to define BlogPost

如果你在 app/something/下新增一個目錄(例如/ models / products /),和

  • 想要在新目錄中命名模組和類,那麼你不需要做任何事情,它將被自己載入。例如,在 app/models/products/ you would need to wrap your class inmodule Products`中。
  • 不想在我的新目錄中命名模組和類,然後你必須將 config.autoload_paths += %W( #{config.root}/app/models/products ) 新增到你的 application.rb 到自動載入。

還有一件需要注意的事情(特別是如果英語不是你的第一語言)是 Rails 在英語中佔不規則複數名詞的事實。因此,如果你的模型名為 Foot,則相應的控制器需要被稱為 FeetController 而不是 FootsController,如果你想要使用 rails魔術路由(以及更多此類功能)。