#ruby-on-rails #activerecord #database-migration #rails-migrations #ruby-on-rails-6.1
#ruby-on-rails #activerecord #база данных-миграция #rails-миграции #ruby-on-rails-6.1
Вопрос:
У меня есть миграция в Rails 6.1 проект, подобный этому:
create_table "items", id: false do |t|
t.string "serial_no", limit: 20, first: true, null: false, index: {unique: true}
t.float "price", null: false
t.integer "company_id", limit: 2, null: false
t.integer "product_id", null: false
end
cols = # whatever
values = # whatever
ActiveRecord::Base.connection.execute("INSERT INTO items (#{cols}) VALUES #{values};")
Я получаю сообщение об ошибке: PG::UndefinedTable: ERROR: relation "items" does not exist
Я знаю, что если я разделю их на два файла, они будут работать, но я хочу, чтобы эти вставки были в одном файле миграции.
Я попробовал ActiveRecord::Base.connection.commit_db_transaction
инструкцию before insertion, она сработала, но затем возникла ERROR: duplicate key value violates unique constraint "schema_migrations_pkey"
при сохранении записи миграции.
Есть идеи, как это сделать в одном файле миграции?
Комментарии:
1. Протестировано с Rails 6.1.0 и pg 1.1 и не получило никаких проблем.
2. Есть ли причина, по которой вам нужно создавать записи в процессе миграции? Почему бы не использовать семена или первоочередную задачу?
3. @MarkMerritt Это одноразовая миграция таблиц из одной базы данных в другую в рамках одного проекта.