200 Migrations [2d]

Posted Over 8 years ago. Visible to the public.

Reading

Discuss with your mentor

  • Instead of migrations, could we simply log into the production server's SQL console and alter tables there whenever we need a change?
  • How do we need to work with migrations when we change feature branches?

Exercise

In MovieDB, add two fields:

  • Actor#total_movies: This field should cache the total number of movies an actor stars in
  • Actor#first_movie_id: This field should cache the first movie to which the actor starred in. The first movie is the movie with the lowest #created_at timestamp.

Add callbacks Show archive.org snapshot to your ActiveRecord models so the field is always up to date. For the purpose of this exercise, please don't use the :counter_cache option and do everything manually instead.

Whenever you add a new column you need to take care of existing records. Add a migration that sets the total_movies and first_movie_id column for existing records. Write this migration in multiple styles:

  • Embedding ActiveRecord models into your migration
  • SQL statements (update "UPDATE actors SET ...")
Henning Koch
Last edit
About 1 month ago
Michael Leimstädtner
Keywords
rails, activerecord
License
Source code in this card is licensed under the MIT License.
Posted by Henning Koch to makandra Curriculum (2015-08-20 15:20)