Other Pages

Expand All

creating_a_migration.step

goals {

  model_diagram header: 'Topics', fields: %w(id title description)

  message "The suggestotron has a list of topics that people can vote on. We'll store our topics in the database. In this step you'll do the following:"

  goal "Create a simple *Table* in the database for topics with a title and a description"
  goal "Automatically generate the corresponding *Scaffold* in Rails (namely, the *Model*, the *View*, and the *Controller*)."

}

steps {

  step {
    console "rails generate scaffold topic title:string description:text"
    message <<-MARKDOWN
* `generate scaffold` tells Rails to create everything necessary to get up and running with topics.
* `topic` tells Rails the name of the new model.
* `title:string` says that topics have a title, which is a "string".
* `description:text` says that topics have a description which is a "text". (What's the difference between "string" and "text"? Basically "text" is for strings that might be very long.)

    MARKDOWN
    message "If you want, take some time to poke around the files listed in this step. You can learn about them in the [Rails Architecture](rails_architecture) page."
    link "rails_architecture"
  }

  step {
    console "rails db:migrate"
    message "This tells Rails to update the database to include a table for our new model."
  }
}

explanation {

  message <<-MARKDOWN
Here, `rails db:migrate` is a command provided by the Rails framework. It uses the migration file we just created (`db/migrate/201xxxxxxxxxxx_create_topics.rb`) to change the database. Database migration files can be crucial to code collaboration.

  MARKDOWN

  tip "You can run `rails --help` to see a list of all the `rails` commands your app currently responds to, along with a short description of each one."
}


next_step "CRUD_with_scaffolding"