Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 奇怪的迁移错误_Ruby On Rails_Database_Activerecord_Migration - Fatal编程技术网

Ruby on 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

我在Rails中遇到了一个奇怪的迁移问题

我有这个用户表

  • 密码
  • 电子邮件
我想用一些新的列来扩展这个用户表,比如

  • 名字
  • 多巴哥
然后我想运行这样的迁移,以填充前两个用户的新列:

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?是的,我创建了,否则它将永远无法工作。。。