Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Ruby on Rails - Using Rails Generators

Introduction

Rails generators are powerful tools that help speed up the development process by automating the creation of boilerplate code. They can generate models, controllers, views, migrations, and other components necessary for a Rails application.

Key Points:

  • Rails generators create files and directories based on conventions.
  • Using generators can save time and reduce the likelihood of errors.
  • This guide covers the most commonly used Rails generators and how to use them effectively.

Commonly Used Generators

Rails comes with several built-in generators that can be used to quickly set up different parts of an application:

  • Model Generator: Generates a model file, migration, and test files.
  • Controller Generator: Generates a controller file, view templates, and test files.
  • Scaffold Generator: Generates a complete set of model, controller, views, and routes for a resource.
  • Migration Generator: Generates a migration file to modify the database schema.

Using the Model Generator

The model generator creates a model file, a migration file, and test files. For example, to generate a model for an Article with a title and body:

# Generate a model named Article with a title and body
rails generate model Article title:string body:text
                

This command creates the following files:

  • A model file in app/models/article.rb
  • A migration file in db/migrate/
  • A test file in test/models/article_test.rb
  • A fixture file in test/fixtures/articles.yml

Using the Controller Generator

The controller generator creates a controller file, view templates, and test files. For example, to generate a controller for Articles with actions index, show, new, and edit:

# Generate a controller named Articles with actions index, show, new, edit
rails generate controller Articles index show new edit
                

This command creates the following files:

  • A controller file in app/controllers/articles_controller.rb
  • View files for each action in app/views/articles/
  • A test file in test/controllers/articles_controller_test.rb
  • A helper file in app/helpers/articles_helper.rb

Using the Scaffold Generator

The scaffold generator creates a full set of MVC files and routes for a resource. For example, to generate a scaffold for an Article with a title and body:

# Generate a scaffold for Article with a title and body
rails generate scaffold Article title:string body:text

# Run the migrations to create the articles table
rails db:migrate
                

This command creates the following files and routes:

  • A model file in app/models/article.rb
  • A controller file in app/controllers/articles_controller.rb
  • View files in app/views/articles/
  • A migration file in db/migrate/
  • Resource routes in config/routes.rb
  • Test files in test/models/ and test/controllers/

Using the Migration Generator

The migration generator creates a migration file to modify the database schema. For example, to add a published_at column to the articles table:

# Generate a migration to add a published_at column to articles
rails generate migration AddPublishedAtToArticles published_at:datetime

# Run the migration
rails db:migrate
                

Custom Generators

You can also create custom generators to suit your specific needs. Custom generators allow you to define your own templates and commands to automate repetitive tasks.

To create a custom generator, you need to create a new generator file in the lib/generators/ directory and define the necessary templates and commands.

Conclusion

Using Rails generators can significantly speed up development by automating the creation of boilerplate code. By understanding and utilizing the built-in generators, you can streamline your workflow and focus on building the core functionality of your application.