ruby-on-rails - 奇怪的迁移错误

标签 ruby-on-rails database activerecord migration

我在 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/

相关文章:

ruby-on-rails - 调用对象并将其传递给 Controller ​​中的自定义方法

ruby-on-rails - Ruby On Rails 与 Windows Vista - 最佳设置?

php - RollBack () 和 beginTransaction() 在我的 PHP PDO 中不起作用

r - 不同行中共享同一列中相同值的值求和

SQL Server 将 Table1 中的所有行与 Table2 中的所有行进行匹配

ruby-on-rails - 没有数据库的 Rails 模型

ruby-on-rails - 将 AdminLTE 集成到 Ruby on Rails

ruby-on-rails - Rails 模型中的条件回调?

java - 覆盖 jOOQ 对 UpdatableRecords 的异常处理

ruby-on-rails - 如何从模型调用辅助方法?