跳轉到內容

Ruby on Rails/內建 Rails 工具/生成器

來自 Wikibooks,開放的書籍,開放的世界
上一篇:入門/執行伺服器 索引 下一篇:內建 Rails 工具/建立生成器

生成器

[編輯 | 編輯原始碼]

Rails 帶有一系列生成器,用於建立模型、控制器、檢視、單元測試、遷移等的存根檔案。生成器透過命令列指令碼訪問RAILS_ROOT/script/generate

所有命令看起來像

 rails generate generator generator-options

要檢視可用的選項,只需輸入

 rails generate

Rails 將向您顯示所有可用的選項以及當前安裝的生成器。預設情況下,您可以從不同的生成器中選擇。最重要的生成器是

  • controller
  • helper
  • mailer
  • migration
  • model
  • scaffold

如果您想了解更多關於不同生成器的資訊,只需輸入生成器命令,例如“script/generate model”在控制檯中,您將獲得有關此特定命令的資訊以及解釋生成器功能的示例。

您可以多次對同一個控制器使用生成器,但請注意:它將為您提供覆蓋控制器檔案的選項(以新增您指定的動作)。只要您沒有修改控制器,這可能沒問題,但如果您已經添加了程式碼,請確保您不會覆蓋它,並返回手動新增動作方法。

生成模型

[編輯 | 編輯原始碼]

要生成模型,請使用以下命令

 rails generate model ModelName column:datatype column:datatype [...]

將 ModelName 替換為模型名稱的駝峰式版本。例如

 rails generate model Person name:string age:integer

這將生成以下內容

exists  app/models/
exists  test/unit/
exists  test/fixtures/
create  app/models/person.rb
create  test/unit/person_test.rb
create  test/fixtures/people.yml
exists  db/migrate
create  db/migrate/20090607101912_create_people.rb

任何必要的目錄將自動建立。現有目錄將不會被替換。檔案app/models/person.rb包含 Person 類。test/unit/person_test.rb包含 Person 類的單元測試存根。test/fixtures/people.yml包含測試資料的存根,這些資料將在測試執行期間用於填充測試資料庫。該db/migrate/20090607101912_create_people.rb包含 Person 類的資料庫遷移存根。請注意,檔案開頭的 時間戳(20090607101912)將始終不同,具體取決於您建立檔案的時間。還要注意 Rails 如何將類名變為複數形式,以使用複數形式作為對應的表、夾具和遷移名稱。

生成控制器

[編輯 | 編輯原始碼]

要生成控制器,請使用以下命令

 rails generate controller ControllerName [actions]

將 ControllerName 替換為控制器的駝峰式版本。當沒有給出任何操作時,Rails 將建立一個響應所有 7 個 REST 操作(new、create、update、edit、destroy、index 和 show)的控制器

 rails generate controller People

將生成以下輸出

 exists  app/controllers/
 exists  app/helpers/
 create  app/views/people
 exists  test/functional/
 exists  test/unit/helpers/
 create  app/controllers/people_controller.rb
 create  test/functional/people_controller_test.rb
 create  app/helpers/people_helper.rb
 create  test/unit/helpers/people_helper_test.rb

檔案app/controllers/people_controller.rb包含 PeopleController 類。test/functional/people_controller_test.rb包含 PeopleController 類的功能測試存根。app/helpers/people_helper.rb是助手方法的存根,這些方法將對該控制器及其關聯的檢視可用。在app/views/people中,您將找到為控制器建立的模板。根據給定的引數,將有不同的檔案。


生成遷移

[編輯 | 編輯原始碼]

要生成遷移,請使用以下命令

 rails generate migration MigrationName column:datatype column:datatype [...]

將 MigrationName 替換為遷移名稱的駝峰式版本。例如

 generate migration AddCityToPerson

這將生成以下內容

exists  db/migrate
create  db/migrate/20090607103358_add_city_to_person.rb

每次您構建一個新模型時,都會自動生成遷移,因此您不需要為每個模型手動生成遷移。通常,當您需要更改現有模型或需要聯接表時,您會使用遷移生成器。同樣,檔名開頭的 時間戳將有所不同。

華夏公益教科書