Создаю новую запись вот так:
truck = Truck.create(:name=>name, :user_id=>2)
В моей базе данных сейчас есть несколько тысяч объектов для грузовиков, но я назначил идентификаторы нескольким из них, так что некоторые идентификаторы остались доступными. Итак, что происходит, rails создает элемент с id = 150, и он отлично работает. Но затем он пытается создать элемент и присвоить ему id = 151, но этот идентификатор может уже существовать, поэтому я вижу эту ошибку:
ActiveRecord::RecordNotUnique (PG::Error: ERROR: duplicate key value violates unique constraint "companies_pkey"
DETAIL: Key (id)=(151) already exists.
И в следующий раз, когда я запущу действие, ему просто будет назначен идентификатор 152, который будет работать нормально, если это значение еще не принято. Как я могу заставить рельсы проверять, существует ли уже идентификатор, прежде чем он его назначит?
Благодарность!
РЕДАКТИРОВАТЬ
Идентификатор грузовика - это то, что дублируется. Пользователь уже существует и в данном случае является постоянным. На самом деле это проблема наследия, с которой мне приходится иметь дело. Один из вариантов - воссоздать таблицу, чтобы на этот раз рельсы автоматически назначали каждый идентификатор. Я начинаю думать, что это может быть лучший выбор, потому что у меня есть несколько других проблем, но миграция для этого была бы очень сложной, потому что Truck является внешним ключом во многих других таблицах. Будет ли простой способ заставить рельсы создать новую таблицу с теми же данными, которые уже хранятся в Truck, с автоматически назначенными идентификаторами и сохранением всех существующих отношений?