Ruby on Rails and editing your Models.

When I first started learning about 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 and do it over. Luckily with much more practice and trial and error, I’ve learned that certainly isn’t the case. Lets talk about creating a user model in Rails and how to add columns of data to your model after you’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.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store