Ruby on Rails Monday, October 31, 2011

On Oct 31, 6:48 pm, NY <yan....@gmail.com> wrote:
> I observed this a few times, but not always happen, and if I down the
> migration and run again, it often works.
>
> My migration is really simple like:
>
> Foo.find_each do |foo|
>   foo.update_attribute(:bar, "baz")
> end
>
> Occasionally, it reports success, but not actually updated the
> attribute for the "bar" column of Foo object. It appears to just skip
> the whole thing and report success. And as I said, if I down it and
> run again, it has always worked.
>
> Anybody else has seen this problem before? I'm using Rails 3.0.10 but
> I had this problem with older 3.0.x versions as well.


Failed validations? You do have to be a little careful when using
models in migrations. Consider this scenario:

- The migration above is written
- A new validation is written and a migration that fixes the data
already present in the database is written

if you try and run both of these migrations in one go then the updates
in the first migration fail, because the latest validations are used.
if you try and run the migration a second time they succeed because by
now the data fixing migration has run. The way to get around this
particular problem is to use copies of the model in your migration
(the migrations guide on guides.rubyonrails.org discusses this)

Fred

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment