Ruby on Rails and editing your Models.

Kyle Davis
2 min readMay 11, 2021

When I first started learning Ruby on Rails and how models worked, I was terrified that if I left something out of my initial model migration, I would have to start over from scratch. Luckily, I’ve come to learn that there is a simple way to edit our models. Lets talk about creating a model in Rails and how to add columns of data to it after we’ve migrated it:

After spinning up your new rails app with:

$ rails new project_name

Make sure to switch to the new folder:

$ cd project_name

Now lets make a data base table called Movie, and for now we’ll include two columns only:

$ rails g model Movie title:string director:string

After using the model generator, Rails will create several files, more importantly at the moment lets look at db/migrate/<timestamp>_create_movies. In this newly created file you’ll see we have the following:

class CreateMovies < ActiveRecord::Migration[6.1]
def change
create_table :employees do |t|
t.string :title
t.string :director

t.timestamps
end
end
end

Luckily for us, Rails created our two columns of title and director which we specified earlier. Before we go any further, we need to make sure we complete our migration with the following command, which should return a response of create_table in our terminal:

$ rails db:migrate

After we initiated our migration we noticed we made a mistake and forgot to add two very important columns to our movie table. These were the mistakes that almost always lead me to abandon my new Rails project and start all over by creating a new one. I saw the absurdity in this and forced myself to stop being a big baby. Thank goodness I did, because now I know what to do! Soon you will too.

To help alleviate this pickle we’re in, lets go ahead and add two more columns to our table all at once:

rails generate migration AddDetailsToMovies sequel:boolean year_released:string

This will produce the following migration:

class AddDetailsToMovies < ActiveRecord::Migration[6.1]
def change
add_column :movies, :sequel, :boolean
add_column :movies, :year_released, :string
end
end

Last step will be to make sure and migrate this again. Then you’ll have two shiny new columns added to your Movie model. Just to double check that you didn’t fat finger anything, go ahead and slide into your db/migrate/schema file to see that your new entries were added. Now go migrate some stuff.

--

--