Ruby on rails 奇怪的迁移错误
我在Rails中遇到了一个奇怪的迁移问题 我有这个用户表Ruby on rails 奇怪的迁移错误,ruby-on-rails,database,activerecord,migration,Ruby On Rails,Database,Activerecord,Migration,我在Rails中遇到了一个奇怪的迁移问题 我有这个用户表 密码 电子邮件 我想用一些新的列来扩展这个用户表,比如 名字 多巴哥 然后我想运行这样的迁移,以填充前两个用户的新列: class UpdateUser < ActiveRecord::Migration def up User.find(1).update_attributes!( :name => 'Alexander', :dob => '1984-08-20') User.fin
- 密码
- 电子邮件
- 名字
- 多巴哥
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
class UpdateUser‘亚历山大’,:dob=>‘1984-08-20’)
User.find(2).更新_属性!(:name=>‘本’,:dob=>‘1929-04-04’)
结束
降下
结束
结束
问题是:当我运行所有迁移文件(rakedb:migrate)而没有最后一个文件(UpdateUser)时,然后用最后一个文件运行一个新的迁移(rakedb:migrate),它就工作了。但是,当我在一个步骤中完成所有迁移(删除、创建和迁移)时,它不起作用
因此,我必须排除最后一个迁移文件,并在第一轮“迁移”之后再次包含它。。。为什么会这样?为什么不在添加列时更新表呢。因此,您必须在添加列后执行
User.reset\u column\u 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')
您可以在上找到有关ActiveRecord迁移的更多信息,也许您可以包括错误堆栈跟踪,以便我们更好地了解您的问题?当我运行rake db:migrate--trace时,没有错误。您是否在早期的迁移中实际创建了
用户
id 1和2?是的,我创建了,否则它将永远无法工作。。。