如何使所有表都包含 Rails 4 中的某些列?

How can I make all tables contain certain columns in Rails 4?

假设我要创建 10 个 table,它们有 4 个共同的列。有没有一种简单的方法可以在不指定 10 table 的迁移文件中的每一个的所有 4 列的情况下生成迁移?

创建您自己的迁移助手非常容易。我将创建一个简单的添加 created_byupdated_by 列的迁移助手,名为 userstamps

创建一个新的初始化文件config/initializers/userstamps.rb:

module UserstampMigrationHelper
  def userstamps
    column :created_by, :integer
    column :updated_by, :integer
  end
end

ActiveRecord::ConnectionAdapters::TableDefinition.include(UserstampMigrationHelper)

现在您可以在迁移中使用它了:

class WidgetsMigration < ActiveRecord::Migration
  def change
    create_table :widgets do |t|
      t.string :name
      t.userstamps
    end
  end
end