gpt4 book ai didi

ruby-on-rails - Rails 3.2 : Invoking up\down from another migration

转载 作者:行者123 更新时间:2023-12-04 13:41:55 26 4
gpt4 key购买 nike

我希望以与生成器类似的方式调用另一个迁移。
基本上,如果您有一个创建表,那么在将来的某个时间点,您将不再使用该表,并且您希望迁移调用的updown与原始create迁移完全相反。
如果可能的话,我会创建一个类似的生成器

rails g reverse_migration CreateModel

然后结果是
class ReverseCreateModel < ActiveRecord::Migration
def up
#call to create model down
end
def down
#call to create model up
end
end

我不希望有任何解决方法,而是要明确地重复代码,并保持进行干净迁移和角色返回的能力。

任何帮助将不胜感激!

最佳答案

迁移只是一个Ruby文件,因此您可以require它:

require "./db/migrate/20120117195557_create_model.rb"

class ReverseCreateModel < ActiveRecord::Migration
def up
CreateModel.new.down
end

def down
CreateModel.new.up
end
end

如果您的原始迁移使用 change,则必须使用 CreateModel.new.migrate(:down)CreateModel.new.migrate(:up)

就我而言,在迁移时使用 migrate(direction)会生成更多输出:
==  ReverseCreateModel: migrating ======================================
== CreateModel: reverting =============================================
(...)
== CreateModel: reverted (0.0018s) ====================================

== ReverseCreateModel: migrated (0.0019s) =============================

代替:
==  ReverseCreateModel: migrating ======================================
(...)
== ReverseCreateModel: migrated (0.0019s) =============================

该答案基于 https://stackoverflow.com/a/754316/183791

关于ruby-on-rails - Rails 3.2 : Invoking up\down from another migration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12267930/

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