Ruby on Rails and editing your Models.
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.