##Objectives
- Write your own migrations
- Run a migration to create a table
- Run a migration to add a column to a table
- Run a migration to change something in the table
The first thing we will do is create a table. In db/migrate/01_create_students.rb
, write the code to create a table with ActiveRecord. We've created a class for you called CreateStudents
. To get access to the ActiveRecord methods, don't forget to inherit from ActiveRecord::Migration
.
Next, define a method called change
and use the ActiveRecord create_table
method within that method to create the table. The table should have a :name
column with a type string
.
After you finish defining the change
method, run the migrations by running rake db:migrate
in your terminal.
The next thing we will do is add a couple of columns to the students
table we just created. To do this, we will create a second migration file. We cannot add these columns to the existing file. Let's call our new file 02_add_grade_and_birthdate_to_students.rb
. It should live in db/migrate
just like the first migration.
This new migration will look similar to the previous one. We will need a class that inherits from ActiveRecord::Migration
, and we will need to define a change method. Inside #change
, instead of create_table
, we will use the add_column
ActiveRecord method.
Let's add a :grade
column and a :birthdate
column. The :grade
column type should be integer
and the :birthdate
column type should be string
.
Imagine you're creating an incredible web app to send out a birthday greeting on each student's birthday. While building this, you realize you accidentally stored your birthdate data as a string
. It would be much easier to work with if the column type was datetime
instead. Let's fix that.
Finally, we will change a column type, string
to datetime
. Same as before, you'll have to create another migration file. This time call it 03_change_datatype_for_birthdate.rb
.
Again, same setup as before. Be sure to use the change_column
method. It takes three necessary arguments: change_column(table_name, column_name, type)
.
View Let's Write Some Migrations on Learn.co and start learning to code for free.
View Writing Our Own Migrations on Learn.co and start learning to code for free.