奇怪的迁移错误

时间:2011-12-13 23:21:34

标签: ruby-on-rails database activerecord migration

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

我有这个用户表

  • 密码
  • 电子邮件
  • ...

我想扩展这个用户表,只有很少的新列,比如

  • 名称
  • DOB
  • ..

然后我想运行这样的迁移来填充前两个用户的新列:

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),最后一个它运行。但是,当我一步完成所有迁移(删除,创建和迁移)时,它不起作用。

所以我必须排除最后一个迁移文件并在第一次“迁移回合”之后再包含它......为什么会这样?

1 个答案:

答案 0 :(得分:3)

为什么不在添加列时更新表格。因此,您必须在添加列后执行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 Migration的更多信息
相关问题