Первое, о чем я мог подумать, это то, что вы передали параметр id в параметрах разрешения.Пожалуйста, проверьте это, и если оно присутствует, удалите его.
Во-вторых, как уже упоминалось в посте, в базе данных уже есть данные, поэтому существует проблема с сгенерированными последовательностями, поскольку их можно использовать только один раз.
Решение состоит в том, чтобы установить для последовательности вашего столбца song_artists.id самое высокое значение в таблице с помощью запроса, подобного следующему:
SELECT setval('song_artist_id_seq', (SELECT max(id) FROM song_artists));
Я предполагаю, что ваше имя последовательности "song_artist_id_seq"", имя таблицы" song_artist "и имя столбца" id ".
Чтобы получить имя последовательности, выполните указанную ниже команду:
SELECT pg_get_serial_sequence('tablename', 'columname');
Для сброса последовательностей postgres из консоли rails:
ActiveRecord::Base.connection.tables.each do |t|
ActiveRecord::Base.connection.reset_pk_sequence!(t)
end
Другим решением будет переопределениеметод save () в вашем классе song_artist для ручной установки идентификатора song_artist для новых записей, но это не рекомендуется.