Редактировать: ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ - Постеры выше верны, вы не должны заполнять БД внутри миграций. Не используйте это для добавления новых данных, только для изменения данных как части изменения схемы.
Во многих случаях предпочтительнее использовать необработанный SQL, но если вам нужно вставить данные как часть миграции (например, выполнить преобразование данных при разбивке таблицы на несколько таблиц), и вам нужны некоторые вещи AR по умолчанию подобно удобному экранированию от БД, вы можете определить локальную версию класса модели:
class MyMigrationSucksALittle < ActiveRecord::Migration
class MyModel < ActiveRecord::Base
# empty guard class, guaranteed to have basic AR behavior
end
### My Migration Stuff Here
### ...
end
Обратите внимание, что это лучше всего подходит для простых случаев; поскольку новый класс находится в другом пространстве имен (MyMigrationSucksALittle::MyModel
), полиморфные ассоциации, объявленные в модели защиты, не будут работать правильно.
Несколько более подробный обзор доступных опций находится здесь: http://railsguides.net/2014/01/30/change-data-in-migrations-like-a-boss/