我在 Rails 中遇到了一个奇怪的迁移问题。
我有这个用户表
- 密码
- 电子邮件
- ...
我想用一些新列来扩展这个用户表,例如
- 姓名
- 多布
- ..
然后我想运行这样的迁移来填充我的前 2 个用户的新列:
class UpdateUser < ActiveRecord::Migration
def up
User.find(1).update_attributes!( :name => 'Alexander', :dob => '1984-08-20')
User.find(2).update_attributes!( :name => 'Ben', :dob => '1929-04-04')
end
def down
end
end
问题是:当我运行所有迁移文件 (rake db:migrate) 而没有最后一个 (UpdateUser) 时,然后使用最后一个运行新的迁移 (rake db:migrate) 时,它会起作用。但当我一步完成所有迁移(删除、创建和迁移)时,它不起作用。
所以我必须排除最后一个迁移文件,并在第一个“迁移轮”之后再次包含它......为什么?
最佳答案
为什么不在添加列时更新表格。因此,您必须在添加列后执行 User.reset_column_information
方法,以确保您的模型具有当前的列信息。
add_column ...
User.reset_column_information
User.find(1).update_attributes!( :name => 'Alexander', :dob => '1984-08-20')
User.find(2).update_attributes!( :name => 'Ben', :dob => '1929-04-04')
您可以在 http://api.rubyonrails.org/classes/ActiveRecord/Migration.html 找到有关 ActiveRecord 迁移的更多信息。
关于ruby-on-rails - 奇怪的迁移错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8497653/