In einer Ruby on Rails App, an der ich arbeite, erlaube ich Benutzern, Dateien hochzuladen und diesen Dateien einen kurzen, zufälligen alphanumerischen Namen zu geben. (ZB 'g7jf8' oder '3bp76'). Was ist der beste Weg, dies zu tun?Wie würde ich eine zufällige und eindeutige Zeichenfolge in Ruby generieren?
Ich denke daran, eine Hash/verschlüsselte Zeichenfolge aus dem ursprünglichen Dateinamen und Timestamp zu generieren. Fragen Sie dann die Datenbank ab, um zu überprüfen, ob sie nicht existiert. Wenn dies der Fall ist, erzeuge ein anderes und wiederhole es.
Das Problem, das ich mit diesem Ansatz sehe, ist, wenn es hohe Wahrscheinlichkeit von doppelten Strings gibt, könnte es eine ziemlich lote der Datenbasis laden.
Es gibt auch die potentielle (falls unwahrscheinliche) Race-Bedingung von zwei Anfragen, die versuchen, denselben Namen zur gleichen Zeit hinzuzufügen.Die Datenbank sollte eine eindeutige Einschränkung für diese Spalte haben und Sie sollten darauf vorbereitet sein, 'ActiveRecord :: RecordNotUnique' zu fangen. – mpartel
überprüfen http://StackOverflow.com/Questions/5966910/generate-unique-random-string-with-letters-and-numbers-in-lower-case – sameera207
Hat der "zufällige" Name einen Sicherheitszweck? Wenn nicht, haben Sie mehr Möglichkeiten. –