Это должно быть что-то простое, но это сводит меня с ума!
У меня есть миграция, где я хочу обновить запись позже
class SubjectsTextField < ActiveRecord::Migration
def self.up
add_column :users, :subjects, :text
User.find(39).update_attribute :subjects, "hey there"
end
def self.down
remove_column :users, :subjects
end
end
Столбец создается, но когда я перехожу к контрольной записи 39, он ставит поле null и не говорит "эй там". Во время миграции ошибок не возникает, и строка update_attribute возвращает true, как если бы она работала.
Эта строка отлично работает в консоли и имеет ожидаемый эффект:
User.find(39).update_attribute :subjects, "hey there"
Я попытался поместить строку update_attribute во вторую миграцию. Если я прогоню их обоих в одном "рейке db: migrate" до текущего, он все равно не работает.
Но вот странная часть. Если я запускаю две отдельные миграции, скажите "rake db: migrate VERSION = 10", чтобы создать только столбец, а затем второй с "rake db: migrate", чтобы обновить атрибут IT WORKS!
Что происходит... как мне изменить запись во время миграции? Кажется, я помню это довольно часто в прошлом. Может быть, это что-то другое с Rails 2.3.2?
Спасибо! Brian