轨道:通过迁移填充现有表



假设我在 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

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

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

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

down 上,删除 up 上添加的记录,因为再次回滚和迁移将复制添加的记录。我认为唯一的研究记录是在up上创建的。小心:tag_name,这必须是唯一的。

我想最好

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

最新更新