跳转到内容

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

每次您构建一个新模型时,都会自动生成迁移,因此您不需要为每个模型手动生成迁移。通常,当您需要更改现有模型或需要联接表时,您会使用迁移生成器。同样,文件名开头的 时间戳将有所不同。

华夏公益教科书