我像这样创建新记录:
truck = Truck.create(:name=>name, :user_id=>2)
我的数据库目前有数千个用于卡车的实体,但是我以一些可用的方式将ID分配给了其中的几个。因此,发生的事情是rails创建id = 150的项目,并且工作正常。但是随后它尝试创建一个项目并将其分配为id = 151,但是该id可能已经存在,因此我看到此错误:
ActiveRecord::RecordNotUnique (PG::Error: ERROR: duplicate key value violates unique constraint "companies_pkey"
DETAIL: Key (id)=(151) already exists.
下次我执行该操作时,它将仅分配ID 152,如果尚未使用该值,它将正常工作。如何在分配ID之前让Rails检查ID是否已经存在?
谢谢!
编辑
卡车ID是要复制的内容。用户已经存在,并且在这种情况下为常数。实际上,这是我必须处理的遗留问题。一种选择是在此时让轨道自动分配每个id的位置重新创建表。我开始认为这可能是最好的选择,因为我还有其他一些问题,但是这样做的迁移将非常复杂,因为Truck是许多其他表中的外键。有没有一种简单的方法可以让Rails使用已经在Truck下存储的相同数据,使用自动分配的ID并维护所有现有关系来创建新表?