Я створюю новий запис так:
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, з автоматично присвоєними ідентифікаторами та підтримкою всіх існуючих зв’язків?