【发布时间】:2010-11-01 15:14:34
【问题描述】:
这一定很简单,但它让我发疯了!
我有一个迁移,我想在之后更新记录
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 时,它的主题字段为空,并且没有说“嘿,那里”。迁移过程中没有抛出任何错误,并且 update_attribute 行返回 true,就好像它已经工作了一样。
这行代码在控制台中完美运行,达到了预期的效果:
User.find(39).update_attribute :subjects, "hey there"
我尝试将 update_attribute 行放在第二次迁移中。如果我在一个“rake db:migrate”中将它们都吹到当前,它仍然不起作用。
但这是奇怪的部分。如果我运行两个单独的迁移,说“rake db:migrate VERSION=10”只创建列,然后第二个用“rake db:migrate”更新属性 IT WORKS!
到底发生了什么...如何在迁移期间修改记录?我似乎记得过去经常这样做。也许它与 Rails 2.3.2 有所不同?
谢谢! 布赖恩
【问题讨论】: