In un'applicazione Ruby on Rails su cui sto lavorando Consento agli utenti di caricare file e di dare a questi file un nome alfanumerico casuale e breve. (Ad es. 'G7jf8' o '3bp76'). Qual è il modo migliore per farlo?Come posso generare una stringa casuale e univoca in Ruby?
Sto pensando di generare una stringa hash/crittografata dal nome file originale e dal timestamp. Quindi interrogare il database per verificare che non esista. Se lo fa, genera un altro e ripeti.
Il problema che vedo con questo approccio è se c'è un'elevata propilità di stringhe duplicate, potrebbe aggiungere un sacco di carico del database.
C'è anche la potenziale (se improbabile) condizione di gara di due richieste che cercano di aggiungere lo stesso nome allo stesso tempo.Il database dovrebbe avere un vincolo univoco su quella colonna e dovresti essere pronto a prendere 'ActiveRecord :: RecordNotUnique'. – mpartel
controlla http://stackoverflow.com/questions/5966910/generate-unique-random-string-with-letters-and-numbers-in-lower-case – sameera207
Il nome "casuale" ha uno scopo di sicurezza? In caso contrario, hai più opzioni. –