Shr*_*ewd 6 ruby-on-rails rails-migrations ruby-on-rails-3
我想以类似于生成器的方式调用另一个迁移.基本上,如果您有一个创建表,那么在将来的某个时间点,您将不再使用该表,并且您希望迁移进行调用,up
并且down
与原始创建迁移的迁移完全相反.如果有可能那么我会创建一个类似的生成器
rails g reverse_migration CreateModel
Run Code Online (Sandbox Code Playgroud)
然后结果是这样的
class ReverseCreateModel < ActiveRecord::Migration
def up
#call to create model down
end
def down
#call to create model up
end
end
Run Code Online (Sandbox Code Playgroud)
我不想要任何解决方法,而是明确地重复代码并保持干净迁移和角色的能力.
任何帮助将不胜感激!
dus*_*san 12
迁移只是一个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
Run Code Online (Sandbox Code Playgroud)
如果您的原始迁移使用change
,则必须使用CreateModel.new.migrate(:down)
和CreateModel.new.migrate(:up)
.
就我而言,migrate(direction)
在迁移时使用时会产生更多输出:
== ReverseCreateModel: migrating ======================================
== CreateModel: reverting =============================================
(...)
== CreateModel: reverted (0.0018s) ====================================
== ReverseCreateModel: migrated (0.0019s) =============================
Run Code Online (Sandbox Code Playgroud)
代替:
== ReverseCreateModel: migrating ======================================
(...)
== ReverseCreateModel: migrated (0.0019s) =============================
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1089 次 |
最近记录: |