Ruby on rails “为什么?”;“rails生成迁移”;调用;调用activerecord";

Ruby on rails “为什么?”;“rails生成迁移”;调用;调用activerecord";,ruby-on-rails,ruby,migration,invoke,Ruby On Rails,Ruby,Migration,Invoke,运行时: rails generate migration <someaction> field:type rails生成迁移字段:type 我可以看到它正在执行两个动作: 调用激活记录 创建迁移文件 我完全理解它为什么要生成迁移文件,但为什么要调用ActiveRecord?这让我很烦恼,因为如果我想手动创建迁移文件怎么办?如何模拟此调用(如果有必要…)被调用以生成迁移文件 如果仔细观察,迁移文件的超类是一个类。MigrationGenerator生成器: 1) 加载您的ORM

运行时:

 rails generate migration <someaction> field:type
rails生成迁移字段:type
我可以看到它正在执行两个动作:

  • 调用激活记录
  • 创建迁移文件
  • 我完全理解它为什么要生成迁移文件,但为什么要调用ActiveRecord?这让我很烦恼,因为如果我想手动创建迁移文件怎么办?如何模拟此调用(如果有必要…)

    被调用以生成迁移文件


    如果仔细观察,迁移文件的超类是一个类。

    MigrationGenerator生成器:

    1) 加载您的ORM(Rails中默认为活动记录)以使其扩展正确的“ORM”::迁移类(默认情况下,这也是ActiveRecord::迁移)

    2) 它本身是
    NamedBase
    生成器的一个扩展,可以查看正在运行的活动记录是否需要决定是否应该将表名多元化。如果你跑步,情况就是这样

    rails generate migration AddPartNumberToProducts part_number:string
    

    您在文件中得到相同的结果

    因此,简单的回答是,您不需要调用active_record来手动创建迁移,但是如果您这样做并且您正在使用active record,请确保您的表名在迁移文件中是复数的

    rails generate migration AddPartNumberToProduct part_number:string