It seems to me that this gets the story_id column in the votes table, but allows for it to be removed again through a migration. The hard coded addition to the model seems to preclude the schema from ever being changed.
Is there a distinction, or was this done for pedagogical reasons?
The original works best if the votes table doesn't already exit. Your technique works best if it does exit.
In general, I would suggest that you try create each table with its own migration. That's easier to read and what people expect so will be easier to maintain. Then add migrations when you need to change your original design. It can make sense to make all the changes that relate to a particular change within a single migration and in this case it can make sense to update more than one table at a time.
For example if some way along the development path, you decide to start using foreign keys via the foreigner plug-in. It would make sense that you add the keys to all the tables within a single migration.
I need to make complex changes to my database, such as moving columns to another table, while at same time preserving my existing data, With Data Studio Administrator for DB2® for Linux®, UNIX®, and Windows® formerly known as DB2 Change Management Expert can i change it?then how?plz help me.