You need to call .reset_column_information in third migration. Please refer
https://api.rubyonrails.org/classes/ActiveRecord/ModelSchema/ClassMethods.html#method-i-reset_column_information
for details.

You can insert and update data in migration, but you might want to consider
using db/seeds.rb instead.
https://guides.rubyonrails.org/active_record_migrations.html#migrations-and-seed-data

HTH

2019年3月27日(水) 23:36 <t...@stinto.com>:

> I'm running Rails 5.0.6, and I can't Google myself to any other occurences
> of this problem.
>
> The migrations fail when I have a migration that inserts data into a
> table, that has data for a column that was added in a previous migration
> file executed by the same migrate command
>
> Basically I have 3 migrations that are run with the following command
> rails db:migrate
>
>
> first migration chronologically:
>
> create_table :campaign_orders do |t|
>   t.integer :order
> end
>
>
> second migration:
>
> add_column :campaign_orders, :priority, :integer
>
>
> third migration:
>
> CampaignOrder.create(order: 0, priority: 1)
>
>
> The third migration fails, if all migrations are outstanding when running
> migrate command, but succeeds if you run the migrate command again.  It
> fails with the following error:
>
>> rails aborted!
>> StandardError: An error has occurred, all later migrations canceled:
>> unknown attribute 'priority' for CampaignOrder.
>> /Users/tomwilliams/Projects/incard-rails/db/migrate/20190326143614_insert_accepted_email_campaign.rb:66:in
>> `up'
>> /Users/tomwilliams/Projects/incard-rails/bin/rails:9:in `require'
>> /Users/tomwilliams/Projects/incard-rails/bin/rails:9:in `<top (required)>'
>> /Users/tomwilliams/Projects/incard-rails/bin/spring:15:in `<top
>> (required)>'
>> bin/rails:3:in `load'
>> bin/rails:3:in `<main>'
>> Caused by:
>> ActiveModel::UnknownAttributeError: unknown attribute 'priority' for
>> CampaignOrder.
>> /Users/tomwilliams/Projects/incard-rails/db/migrate/20190326143614_insert_accepted_email_campaign.rb:66:in
>> `up'
>> /Users/tomwilliams/Projects/incard-rails/bin/rails:9:in `require'
>> /Users/tomwilliams/Projects/incard-rails/bin/rails:9:in `<top (required)>'
>> /Users/tomwilliams/Projects/incard-rails/bin/spring:15:in `<top
>> (required)>'
>> bin/rails:3:in `load'
>> bin/rails:3:in `<main>'
>> Tasks: TOP => db:migrate
>> (See full trace by running task with --trace)
>
>
> Now, I can just *"fix"* it by running the migrate command again, or as I
> did, rollback the migrations and put the added column in the create table
> migration and deleting the add_column migration.
>
> My question is - does anybody know if this is a known issue, and if so,
> could someone provide a link.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-talk+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/1eb04bc6-7c56-4555-a90e-47b18a2f8d60%40googlegroups.com
> <https://groups.google.com/d/msgid/rubyonrails-talk/1eb04bc6-7c56-4555-a90e-47b18a2f8d60%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/CA%2BfENYVPaY3Q-EAJEVB96M%2B9tfGAEDE6NJaOQrtzK9g6chmCWA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to