Skip to content

Commit

Permalink
Merge pull request #7050 from kytrinyx/documentation-reset-column-info
Browse files Browse the repository at this point in the history
Expand the caveat about models in migrations in the rails guide.
  • Loading branch information
vijaydev committed Oct 11, 2012
2 parents e5e174a + a1d2f69 commit cd98c25
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions guides/source/migrations.md
Expand Up @@ -889,6 +889,27 @@ class AddFuzzToProduct < ActiveRecord::Migration
end
```
There are other ways in which the above example could have gone badly.
For example, imagine that Alice creates a migration that selectively
updates the +description+ field on certain products. She runs the
migration, commits the code, and then begins working on the next feature,
which is to add a new column +fuzz+ to the products table.
She creates two migrations for this new feature, one which adds the new
column, and a second which selectively updates the +fuzz+ column based on
other product attributes.
These migrations run just fine, but when Bob comes back from his vacation
and calls `rake db:migrate` to run all the outstanding migrations, he gets a
subtle bug: The descriptions have defaults, and the +fuzz+ column is present,
but +fuzz+ is nil on all products.
The solution is again to use +Product.reset_column_information+ before
referencing the Product model in a migration, ensuring the Active Record's
knowledge of the table structure is current before manipulating data in those
records.
Schema Dumping and You
----------------------
Expand Down

0 comments on commit cd98c25

Please sign in to comment.