200 Migrations [2d]

Updated . Posted . 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
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)