Bri*_*ong 19 migration ruby-on-rails
这一定是简单的事情,但它让我疯了!
我有一个迁移,我想在之后更新记录
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
Run Code Online (Sandbox Code Playgroud)
列被创建但是当我去检查记录39时,它的subject字段为空并且不说"嘿那里".迁移期间不会抛出任何错误,update_attribute行返回true,就像它已经工作一样.
此行在控制台中完美运行并具有预期效果:
User.find(39).update_attribute :subjects, "hey there"
Run Code Online (Sandbox Code Playgroud)
我尝试在第二次迁移中放入update_attribute行.如果我在一个"rake db:migrate"中将它们一直吹到当前,它仍然不起作用.
但这是奇怪的部分.如果我运行两次单独的迁移,请说"rake db:migrate VERSION = 10"只创建列,然后第二次使用"rake db:migrate"来更新属性IT WORKS!
到底是怎么回事......如何在迁移过程中修改记录?我似乎记得在过去经常这样做.也许它与Rails 2.3.2有所不同?
谢谢!布赖恩
Mic*_*cot 35
reset_column_information在使用新列之前,需要调用已更改的模型.在add_column和更新之间添加:
User.reset_column_information
Run Code Online (Sandbox Code Playgroud)
请参阅ActiveRecord :: Migration页面上的"在更改其表后使用模型" .
| 归档时间: |
|
| 查看次数: |
4264 次 |
| 最近记录: |