我似乎找不到允许我跳过迁移的选项或任何东西.

我知道你在想什么:"你不应该这么做……"

我需要跳过对开发数据库中不存在的特定用户记录进行更改的migrations.我不想更改迁移,因为它不是我应该使用的源代码的一部分.有没有办法跳过迁移或跳过失败的迁移?

提前谢谢!

推荐答案

我认为你应该修正那些令人不快的迁移,使其不那么脆弱,我猜if条语句和rescue条语句就足够了.

但是,如果修复迁移真的不是一个选项,你可以用各种方式来伪装它.首先,您可以注释掉迁移方法,运行rake db:migrate,然后取消注释(或恢复)有问题的migrations.

你也可以在数据库中伪造它,但除非你知道自己在做什么,而且当你(不可避免地)犯了错误时,你不介意手动修补,否则不建议使用这种诡计.数据库中有一个名为schema_migrations的表,它有一个名为versionvarchar(255)列;db:migrate使用此表跟踪应用了哪些migrations.您只需插入适当的version值,rake db:migrate就会认为迁移已经完成.查找有问题的迁移文件:

db/migrate/99999999999999_XXXX.rb

然后进入你的数据库,说:

insert into schema_migrations (version) values ('99999999999999');

其中99999999999999当然是迁移文件名中的数字.那么运行rake db:migrate应该跳过这个migrations.

在第三个选项之前,我会 Select 第二个选项,为了完整性,我只包括"黑客schema_versions"选项.

Ruby-on-rails相关问答推荐

错误正在被ViewComponent、Ruby on Rails中吞噬

刺激中的Rails 7和 bootstrap 错误-无法解析模块说明符 bootstrap

Rails 7.1,登录到STDOUT和LOG/Production.log

Sidekiq with Rails - 控制台与 rake 任务中的不同 Sidekiq 实例

删除 aws s3 (rails7) 上的日志(log)文件

has_many 通过大小验证

如何在生成的 HTML 本身中显示部分名称

如何启动 rails 控制台并专门使用测试数据库?

如何将动态 Ruby 代码嵌入到 Slim 模板中的javascript部分?

如何将实例变量传递给 RSpec 共享示例

骨干model.destroy()即使工作正常也会调用错误回调函数?

Rails 4 Form: has_many through: checkboxes

Rails ActiveRecord 查询日期范围

设计自定义路由和登录页面

Rails 范围为 IS NOT NULL 并且不为空/空白?

ActiveRecord 事务中的错误处理?

Sidekiq Rails 4.2 使用 Active Job 还是 Worker?有什么不同

Rails:如何在rails中使用dependent::destroy?

如何删除删除选项表单 activeAdmin?

在 Rails 3 中突出显示当前页面的最佳方法? -- 有条件地将css类应用于链接