是否可以通过ActiveRecord迁移从命令行调用change_table?

时间:2018-10-26 21:55:02

标签: ruby-on-rails

通过在迁移名称中指定关键字“ Create”,可以在命令行迁移中调用create_table语法:

rails g migration CreateMyTables name:string

这将创建具有以下内容的迁移:

class CreateMyTables < ActiveRecord::Migration
  def change
    create_table :my_tables do |t|
      t.string :name
    end
  end
end

我想使用“ Change”关键字来完成相同的操作。所以从命令行运行:

rails g migration ChangeMyTables user:references

这就是我得到的:

class ChangeMyTables < ActiveRecord::Migration
  def change
  end
end

这是我期望的:

class ChangeMyTables < ActiveRecord::Migration
  def change
    change_table :my_tables do |t|
      t.references :user, index: true
    end
  end
end

1 个答案:

答案 0 :(得分:1)

有一种方法可以从命令行添加参考列:

rails g migration AddUserToMyTable user:references

注意:要将列添加到表中,我们使用约定Add[column]To[table]重命名迁移。

结果将类似于:

class AddUserToMyTable < ActiveRecord::Migration[5.2]
  def change
    add_reference :my_tables, :user, foreign_key: true
  end
end

注意: foreign_key: true将为您创建索引。

详细了解add_reference