Rails:通过迁移填充现有表

假设我在Rails中有一个现有的迁移:

class CreateStudies < ActiveRecord::Migration def change create_table :studies do |t| t.string :display_name, null: false t.string :tag_name, null: false t.timestamps end add_index :studies, :tag_name, unique: true end end 

后来我意识到我想用多行填充这个表,我不想使用rake db:rollback或seeds.rb文件。 新迁移文件的格式是什么?

只是:

在命令提示符下生成:

 rails generate migration AddInitialStudies 

并修改生成的迁移的down方法:

 class AddInitialStudies < ActiveRecord::Migration def up Study.create(display_name: "Example name", tag_name: "example_name") end def down Study.delete_all end end 

此时我生成一个Study对象,但您可以添加任意数量。

down ,删除添加的记录,因为再次回滚和迁移将复制添加的记录。 我假设唯一的研究记录是在上面创建的。 注意:tag_name ,它必须是唯一的。

我想最好使用rake任务生成一些新对象而不是使用迁移。 以下是示例代码https://github.com/maxmilan/Adverts_desk/blob/master/lib/tasks/advert_generators.rake#L3 。 您还可以将生成的对象数作为任务参数发送。