Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Ruby on Rails/Built-In Rails Tools/Generators

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Ruby on Rails Getting Started/Running the Server Built-In_Rails_Tools/Make a generator Generators Introduction Rails comes with a number of generators which are used to create stub files for models, controllers, views, unit tests, migrations and more. Generators are accessed through the command-line script RAILS_ROOT/script/generate All commands look like rails generate generator generator-options To see what options are available, just enter rails generate and Rails will show you all available options and what generators are currently installed. By default, you can choose from the different generators. The most important are: controller helper mailer migration model scaffold If you want more information on different generators, simply enter the generator commend e.g. "script/generate model" in the console and you will get information to this specific command and examples explaining what the generator does. You can use the generator multiple times for the same controller, but be careful: it will give you the option to overwrite your controller file (to add the actions you specify). As long as you have not modified the controller this might be fine, but if you have already added code then make sure you do not overwrite it and go back and manually add the action methods. Generate a Model To generate a model use the following: rails generate model ModelName column:datatype column:datatype [...] Replace ModelName with the CamelCase version of your model name. For example: rails generate model Person name:string age:integer This would generate the following: 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 Any necessary directories will be automatically created. Existing ones will not be replaced. The file app/models/person.rb contains the Person class. test/unit/person_test.rb contains the unit test stub for the Person class. test/fixtures/people.yml contains a stub for test data which will be used to populate the test database during test runs. The db/migrate/20090607101912_create_people.rb contains the database migration stub for the Person class. Note that the timestamp at the beginning of the file (20090607101912) will always be different depending on the time you created the file. Also note how Rails pluralizes the class name to use the plural form as the corresponding table, fixture and migration names. Generate a Controller To generate a controller use the following: rails generate controller ControllerName [actions] Replace ControllerName with the CamelCase version of your controller name. When no actions are given, Rails will create a Controller that responds to all 7 REST actions (new, create, update, edit, destroy, index & show) rails generate controller People would generate the following output: 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 The file app/controllers/people_controller.rb contains the PeopleController class. test/functional/people_controller_test.rb contains the functional test stub for the PersonController class. app/helpers/people_helper.rb is a stub for helper methods which will be made available to that controller and its associated views. Inside app/views/people you will find the created templates for the controller. Depending on the given parameters, there will be different files. Generate a Migration To generate a migration use the following: rails generate migration MigrationName column:datatype column:datatype [...] Replace MigrationName with the CamelCase version of your migration name. For example: generate migration AddCityToPerson This would generate the following: exists db/migrate create db/migrate/20090607103358_add_city_to_person.rb Migration are automatically generated each time you construct a new model, so you do not need to generate migrations by hand for each model. Typically you will use the migration generator when you need to change an existing model or need join tables. Again, the timestamp starting the filename will be different.