2016-06-05 17 views
0

Wenn meine neue Website startet wird es sehr wenige Benutzer. Momentan ist die Profilseite eines Benutzers/users /: id, also wird es in den frühen Phasen/users/6 usw. sein. Ich möchte nicht, dass andere wissen, wie viele Benutzer die Website hat. Ich denke, dass eine lange ID (wie ein Uuid) mit Zahlen und Buchstaben hässlich aussieht, deshalb würde ich es vorziehen, nur Zahlen zu sein.Wie Verschleierung Benutzer-ID mit Zufallszahl mit Friendly_id

Wie kann ich friendly_id gem verwenden, um eine Zufallszahl Slug zu erstellen, die auch einzigartig sein wird? Dies ist auch meine erste Website, daher wären "Best Practices" Tipps zur Verschleierung von Benutzer-IDs hilfreich. Vielen Dank.

Antwort

0

Dies ist ein Beispiel aus bestehenden Projekt:

class User < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :email, use: [:slugged, :finders] 

    def normalize_friendly_id(email) 
    Digest::MD5.hexdigest(email) 
    end 

    def should_generate_new_friendly_id? 
    slug.blank? 
    end 
end 

Sie den MD5 auf eine Zufallszahl ändern kann so etwas wie dies mit:

SecureRandom.random_number(1_000_000_000) 
+0

Wie kann ich sicherstellen, dass die Zufallszahl ist einzigartig und Wie geht man damit um, wenn die generierte Zufallszahl verwendet wurde? – user4584963

+0

Ich glaube, 'FriendlyId' behandelt das für Sie. Es fällt auf Uuid, wenn es keine eindeutige ID generieren kann. Sie können 'validates: slug, uniqueness: true' für die Explicitness hinzufügen. – Bartosz