Rails 3.1: невозможно выполнить запись в столбец в той же миграции, которая его добавляет

У меня была миграция add_column, которая прошла нормально. Однако после его запуска и запуска консоли я обнаружил, что столбцы first_name и last_name полностью пусты. Я пробовал использовать save! , и это имело тот же эффект - ошибок не сообщалось. Вот оригинал:

class UserAddFirstNameAndLastName < ActiveRecord::Migration
  def change
    # add column first name, last name string
    add_column :users, :first_name, :string
    add_column :users, :last_name, :string

    User.all.each do |u|
      u.first_name = 'first name'
      u.last_name = 'last name'
      u.save
    end
  end
end

Я также подумал, что это может быть проблема с загрузкой класса, поэтому я вставил строку User , чтобы заставить пользовательский класс перезагрузиться перед циклом. Никаких кубиков.

Когда я разделил это на две миграции, желаемый эффект был достигнут. У кого-нибудь есть объяснение этому? Клянусь, я даже делал это в одном проекте с прошлыми миграциями.

Другие примечания: Devise для пользовательского механизма, перед запуском миграции добавлены новые столбцы в attr_accessible в классе User.

23
задан mu is too short 5 October 2016 в 17:43
поделиться