gpt4 book ai didi

ruby-on-rails - 迁移数据 - 不仅仅是模式,Rails

转载 作者:数据小太阳 更新时间:2023-10-29 06:37:33 24 4
gpt4 key购买 nike

有时,需要数据迁移。随着时间的推移,使用域模型的代码更改和迁移不再有效,并且迁移失败。迁移数据的最佳做法是什么?

我试着举个例子来说明问题:

考虑一下。你有一个迁移

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, :datetime
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>

那不是团队合作者,他会修复您引入的错误。你应该做什么?

最佳答案

这是 Using Models in Your Migrations 的完美示例

class ChangeFromPartnerAppliedToAppliedAt < ActiveRecord::Migration
class User < ActiveRecord::Base
end

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

根据 Mischa 的评论进行编辑

class ChangeFromPartnerAppliedToAppliedAt < ActiveRecord::Migration
class User < ActiveRecord::Base
end

def up
User.update_all('applied_at = partner_application_at')
end
end

关于ruby-on-rails - 迁移数据 - 不仅仅是模式,Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13045440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com