tôi tạo ra một kỷ lục mới như vậy:Rails tự động gán id đó đã tồn tại
truck = Truck.create(:name=>name, :user_id=>2)
cơ sở dữ liệu của tôi hiện đang có vài ngàn đơn vị cho xe tải, nhưng tôi phân công của id để một vài trong số họ, trong một cách để lại một số id có sẵn. Vì vậy, những gì đang xảy ra là đường ray tạo mục với id = 150 và nó hoạt động tốt. Nhưng sau đó nó cố gắng để tạo ra một mục và gán nó id = 151, nhưng id có thể đã tồn tại, vì vậy tôi thấy 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ỉ cần chỉ định id 152, sẽ hoạt động tốt nếu giá trị đó chưa được thực hiện. Làm thế nào tôi có thể nhận được đường ray để kiểm tra xem một ID đã tồn tại trước khi nó gán nó?
Cảm ơn!
EDIT
Id xe tải là những gì đang được nhân đôi. 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 giải quyết. 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 bởi vì tôi có một vài vấn đề khác, nhưng việc di chuyển để làm điều này sẽ rất phức tạp vì Xe tải là chìa khóa ngoại trong nhiều bảng khác. Sẽ có một cách đơn giản để có đường ray tạo ra một bảng mới với cùng một dữ liệu đã được lưu trữ trong Xe tải, với ID được gán tự động và duy trì tất cả các mối quan hệ hiện có?
tại sao bạn không cho phép đường ray gán ID tự động? Điều đó sẽ loại bỏ bất kỳ nguy cơ trùng lặp nào - hoặc đây có phải là vấn đề về dữ liệu kế thừa mà bạn phải giữ lại các ID cũ không? Chỉ muốn hiểu trường hợp kinh doanh một chút vì điều này không kinh doanh như thường lệ khi tạo một đối tượng mới. – MBHNYC
@MBHNYC Tôi nghĩ rằng D-Nice đang chỉ định user_id trong khi tạo công ty và không phải id như bạn đang nghĩ (và tôi cũng đã làm một lúc). – Anil
Ooo tốt bắt Anil - bạn hoàn toàn đúng. @ D-Nice, có lẽ thêm di chuyển của bạn cho bảng này để bài viết của bạn trong trường hợp có một cái gì đó kỳ lạ? Tempting để chỉnh sửa rằng user_id để loại bỏ sự nhầm lẫn .. – MBHNYC