gpt4 book ai didi

mysql - 有没有办法跳过迁移文件的错误并继续下一个文件(Ruby on Rails + mysql)?

转载 作者:行者123 更新时间:2023-11-29 15:55:09 25 4
gpt4 key购买 nike

我的应用程序中有 424 个迁移文件,其中一些可以工作,有些则不能(直接对模型文件进行更改),我需要运行所有这些文件作为解决其他问题的一部分,问题是,每当其中一个文件失败时,整个进程都会被丢弃。

除了将迁移编号插入 schema_migrations 之外,还有其他方法吗?

最佳答案

如果您不再需要迁移,只需删除迁移文件即可。如果您正在使用版本控制,您将来随时可以取消删除它。但如果您可以在生产中跳过它,我不知道为什么您会再次需要它。

如果删除它不是一个选项,则意味着您需要它并且应该修复它。出于您所描述的确切原因,迁移永远不应该引用 app 目录中的模型。模型的更改可能会导致旧迁移失败。

如果您可以修复迁移以使用纯 SQL 进行工作,那么这是最好的选择。

如果您出于某种原因需要使用 AR 模型,您应该在迁移中声明一个仅包含您需要的最小模型。这样您的迁移就不会受到任何 future 模型更改的影响。这是一个简单的例子。在本例中,我实际上只使用 SQL,但为了演示:

class UpdateUserDisplayNames < ActiveRecord::Migration
# Any reference to User in the scope of this migration will
# reference this class, insulating the migration from changes
# to the User class in app/models
class User < ApplicationRecord; end;

def up
User.find_each do |u|
u.update!(display_name: "#{u.first_name} #{u.last_name}"
end
end
end

关于mysql - 有没有办法跳过迁移文件的错误并继续下一个文件(Ruby on Rails + mysql)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56526749/

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