Вы действительно не должны использовать
ProductType.create
в ваших миграциях.
Я сделал подобное, но в долгосрочной перспективе они не гарантированно работают.
Когда вы запускаете миграцию, класс модели, который вы используете, является классом во время запуска миграции, а не классом, когда вы создали миграцию. Вы должны быть уверены, что никогда не измените свою модель таким образом, чтобы остановить запуск миграции.
Вам лучше запустить SQL, например:
[{name: 'Type', ..}, .. ].each do |type|
execute("INSERT INTO product_types (name) VALUES ('#{type[:name]} .. )
end