Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 迁移DATA – 不仅仅是模式,Rails大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有时需要数据迁移.随着时间的推移,使用域模型的代码更改和迁移不再有效,迁移失败.迁移数据的最佳做法是什么?

我试着举个例子来澄清问题:

虑这个.你有迁移

class ChangeFromPartnerAppliedToAppliedAt < ActiveRecord::Migration
  def up
    User.all.each do |user|
      user.applied_at = user.partner_application_at
      user.save
   end
 end

当然这样运行得很好.之后,您需要一个模式更改

class AddAcceptanceConfirmedAt < ActiveRecord::Migration
  def change
    add_column :users,:acceptance_confirmed_at,:datetiR_360_11845@e
  end
end

class User < ActiveRecord::Base
  before_save :do_something_with_acceptance_confirmed_at
end

对于你,没有问题.它运行完美.但是,如果您的同事今天提到这两个,那么没有运行第一次迁移,他会在运行第一次迁移时收到此错误:

rake aborted!
An error has occurred,this and all later migrations canceled:
undefined method `acceptance_confirmed_at=' for #<User:0x007f85902346d8>

这不是一个团队的球员,他会修复你介绍的bug.你应该怎么做?

解决方法

最佳做法是:不要在迁移中使用模型.迁移改变了AR映射的方式,所以不要使用它们.用SQL完成所有操作.这样它总是会奏效的.

这个:

User.all.each do |user|
  user.applied_at = user.partner_application_at
  user.save
end

我会这样做

update "updatE users SET applied_at=partner_application_at"

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 迁移DATA – 不仅仅是模式,Rails全部内容,希望文章能够帮你解决ruby-on-rails – 迁移DATA – 不仅仅是模式,Rails所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。