In the Ruby on Rails web development framework, the rails generate migration
command is used to create a new database migration. Migrations are a way to make changes to the structure of a database, such as creating, modifying, or deleting tables and columns. They are an important tool for managing the evolution of a database over time, as the application that uses the database changes and grows.
👋 Check out our easy to use desktop GUI for SQL
Beekeeper Studio is a truly cross-platform SQL GUI with a clean, uncluttered interface. Write SQL, edit data, alter tables, and more!
Available for MacOS, Linux, and Windows.
To create a new migration, you can use the rails generate migration
command followed by a name for the migration. For example, to create a migration to create a new table called “products”, you might run the following command:
rails generate migration create_products
This will create a new file in the db/migrate
directory of your Rails project, with a name like YYYYMMDDHHMMSS_create_products.rb
. The timestamp at the beginning of the file name ensures that the migration files are executed in the correct order.
Inside the migration file, you will find a class with a change
method. This method is where you can define the changes that you want to make to the database. To create a new table, you can use the create_table
method, which takes a block of code that defines the columns and their types for the table. For example:
class CreateProducts < ActiveRecord::Migration[6.0]
def change
create_table :products do |t|
t.string :name
t.text :description
t.integer :price
t.timestamps
end
end
end
This migration will create a new table called “products” with four columns: “name”, “description”, “price”, and “created_at” and “updated_at” (which are automatically added by the timestamps
method).
To actually apply the changes defined in the migration, you need to run the rails db:migrate
command. This will execute all of the pending migrations and update the database schema to reflect the changes.
Migrations are a powerful and convenient way to manage changes to a database, and they are an essential part of the Ruby on Rails framework. By using the rails generate migration
command and writing code to define the changes you want to make, you can easily and safely modify the structure of your database as your application evolves.