Tôi tạo một bản ghi mới như vậy:
truck = Truck.create(:name=>name, :user_id=>2)
Cơ sở dữ liệu của tôi hiện có vài nghìn thực thể cho xe tải, nhưng tôi đã gán id cho một vài trong số chúng, theo cách để trống một số id. Vì vậy, những gì đang xảy ra là rails tạo mục với id = 150 và nó hoạt động tốt. Nhưng sau đó nó cố gắng tạo một mục và gán nó id = 151, nhưng id đó có thể đã tồn tại, vì vậy tôi gặp lỗi này:
ActiveRecord::RecordNotUnique (PG::Error: ERROR: duplicate key value violates unique constraint "companies_pkey"
DETAIL: Key (id)=(151) already exists.
Và lần sau khi tôi chạy hành động, nó sẽ chỉ định id 152, sẽ hoạt động tốt nếu giá trị đó chưa được sử dụng. Làm cách nào tôi có thể lấy rails để kiểm tra xem một ID đã tồn tại hay chưa trước khi nó chỉ định nó?
Cảm ơn!
BIÊN TẬP
Id Xe tải là những gì đang được sao chép. Người dùng đã tồn tại và là một hằng số trong trường hợp này. Nó thực sự là một vấn đề di sản mà tôi phải đối phó. Một tùy chọn, là tạo lại bảng tại let rails tự động gán mọi id lần này. Tôi bắt đầu nghĩ rằng đây có thể là lựa chọn tốt nhất vì tôi còn gặp một số vấn đề khác, nhưng việc di chuyển để thực hiện điều này sẽ rất phức tạp vì Xe tải là một khóa ngoại trong rất nhiều bảng khác. Có cách nào đơn giản để rails tạo một bảng mới với cùng một dữ liệu đã được lưu trong Truck, với ID được gán tự động và duy trì tất cả các mối quan hệ hiện có không?