How do I add some inserts in rails migration?

后端 未结 5 1135
说谎
说谎 2020-12-04 23:47

After creating a table (by migration), I want to insert some entries directly. How must I write a migration for this?

thanks

5条回答
  •  伪装坚强ぢ
    2020-12-05 00:52

    Edit: PLEASE NOTE - Posters above are correct, you should not populate the DB inside migrations. Don't use this to add new data, only to modify data as part of changing the schema.

    For many things, using raw SQL will be preferable, but if you need to insert data as part of a migration (for instance, doing data conversion when breaking out a table into multiple tables), and you want some default AR stuff like convenient DB-independent escaping, you can define a local version of the model class:

    class MyMigrationSucksALittle < ActiveRecord::Migration
      class MyModel < ActiveRecord::Base
        # empty guard class, guaranteed to have basic AR behavior
      end
    
      ### My Migration Stuff Here
      ### ...
    
    end
    

    Note that this works best for simple cases; since the new class is in a different namespace (MyMigrationSucksALittle::MyModel), polymorphic associations declared in the guard model won't work correctly.

    A somewhat more detailed overview of available options is located here: http://railsguides.net/2014/01/30/change-data-in-migrations-like-a-boss/

提交回复
热议问题