Rails 5:如何在数据库迁移中进行'migration partial'

Rails 5: How to make a 'migration partial' in database 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

但是,当 运行 迁移

时,我总是遇到语法错误

创建一个名为 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