为什么“rails生成迁移”调用“调用activerecord”

时间:2013-01-08 23:10:19

标签: ruby-on-rails ruby migration invoke

运行时:

 rails generate migration <someaction> field:type

我可以看到它正在执行两项操作:

  1. 调用invoke active_record
  2. 创建迁移文件。
  3. 我完全理解为什么它会生成迁移文件,但为什么它会调用ActiveRecord?这让我感到困扰,因为如果我想手动创建迁移文件怎么办?我将如何模仿这个调用(如果它甚至是必要的......)?

2 个答案:

答案 0 :(得分:3)

MigrationGenerator生成器:

1)加载你的ORM(默认情况下在Rails中是活动记录)让它扩展正确的'ORM':: Migration类(默认情况下再次是ActiveRecord :: Migration)

2)它本身是NamedBase生成器的扩展,它查看您运行的Active Record是否应该使表名复数化。如果你运行

就是这样
rails generate migration AddPartNumberToProducts part_number:string

rails generate migration AddPartNumberToProduct part_number:string

您的文件会得到相同的结果。

简而言之,您不需要调用active_record来手动创建迁移,但是如果您这样做并且您正在使用Active Record,请确保您的表名在您的迁移文件中是多元化的。

答案 1 :(得分:0)

调用

activerecord gem来生成迁移文件。

如果仔细观察,迁移文件的超类是ActiveRecord::Migration类。