Trong ứng dụng Ruby on Rails tôi đang làm việc trên tôi cho phép người dùng tải tệp lên và muốn cung cấp cho các tệp này một tên ngắn và ngẫu nhiên. (Ví dụ: 'g7jf8' hoặc '3bp76'). Cách tốt nhất để làm việc này là gì?Làm cách nào để tạo một chuỗi ngẫu nhiên và duy nhất trong Ruby?
Tôi nghĩ đến việc tạo chuỗi băm/mã hóa từ tên tệp và dấu thời gian gốc. Sau đó truy vấn cơ sở dữ liệu để kiểm tra lại nó không tồn tại. Nếu có, tạo một cái khác và lặp lại.
Vấn đề tôi thấy với cách tiếp cận này là nếu có khả năng chống chịu cao của các chuỗi trùng lặp, nó có thể thêm khá nhiều lượt tải cơ sở dữ liệu.
Ngoài ra còn có điều kiện đua tiềm năng (nếu không thể xảy ra) của hai yêu cầu cố gắng thêm cùng một tên cùng một lúc.Cơ sở dữ liệu nên có một ràng buộc duy nhất trên cột đó và bạn nên chuẩn bị để bắt 'ActiveRecord :: RecordNotUnique'. – mpartel
kiểm tra http://stackoverflow.com/questions/5966910/generate-unique-random-string-with-letters-and-numbers-in-lower-case – sameera207
Tên "ngẫu nhiên" có mục đích bảo mật không? Nếu không, bạn có nhiều lựa chọn hơn. –