Rails 5:如何在数据库迁移中进行“部分迁移”

时间:2018-02-09 11:15:58

标签: ruby-on-rails rails-migrations

我有很多表使用相同的列名。我想将它们拆分为部分,这样我每次重新创建数据库时都可以编辑部分以更改列。

我试过了:

水果迁移文件

class CreateFruit < ActiveRecord::Migration[5.0]
  def change
    create_table :fruits do |t|
      partial
    end
end

宠物迁移文件

class CreatePet < ActiveRecord::Migration[5.0]
  def change
    create_table :pets do |t|
      partial
      t.string :personality
    end
end

部分文件(application.rb?)

def partial
  t.string :name
  t.string :size
end

但是,我在运行迁移时总是遇到语法错误

1 个答案:

答案 0 :(得分:2)

创建名为db/migrate/_partial_migration.rb的文件:

class PartialMigration
  class << self
    def call(t)
      t.string :name
      t.string :size
    end
  end
end

在您的迁移中db/migrate/20180209112447_create_pet.rb

require_relative "./_partial_migration.rb"

class CreatePet < ActiveRecord::Migration[5.0]
  def change
    create_table :bar do |t|
      PartialMigration.call(t)
      t.string :personality
    end
  end
end