Hash anstelle von ID

8

Ich möchte automatisch generierte Hashes anstelle von automatisch inkrementierten Ganzzahlen in meinen ActiveRecords als Primärschlüssel verwenden. Dies wirft zwei Fragen auf:

  1. wie man diese Generation durchführt effizienteste Art und Weise?
  2. wie geht man damit um? erzeugter Hash existiert bereits in Tabelle?

Grüße, Mateusz

    
Mateusz 31.03.2011, 08:14
quelle

4 Antworten

2

Es ist kein Duplikat Ihrer Frage, aber ich denke, Sie wollen das Gleiche tun:

Jedem Benutzer einen eindeutigen Namen zuweisen 100 Zeichen Hash in Ruby on Rails

    
Spyros 31.03.2011, 08:27
quelle
6

Wenn Sie das möchten, weil Sie die ID nicht in der Web-URL anzeigen möchten. Sie können ein Juwel wie Ссылка

verwenden

Er erstellt einen reversiblen Hash von Ihrer Datenbank-ID, so dass der Hash nicht in der Datenbank gespeichert werden muss.

Verwenden Sie es in Ihren Modellen to_param Methode.

%Vor%

Und entschlüsseln Sie den Hash, bevor Sie den Datensatz aus der Datenbank finden.

%Vor%     
Mika 07.10.2014 04:47
quelle
3

Es ist vielleicht nicht genau das, wonach du gefragt hast. Aber ich hatte ein ähnliches Problem, wo ich einen Hash anstelle der ID in der URL verwenden wollte. Meine Lösung folgt

  1. Ich habe eine Spalte in meiner Tabelle namens privatelink
  2. hinzugefügt
  3. In meinem Modell schrieb ich:
%Vor%

Quelle: Railcast # 63 Modellname in URL - zeigt, wie die Methode to_param

verwendet wird     
Hilde 25.09.2012 10:18
quelle
0

Bei der Verwendung von Oracle hatte ich den Fall, dass ich die ID selbst erstellen wollte (und keine Sequenz verwenden), und dies in posten ich gebe die details wie ich das gemacht habe. Kurz gesagt, der Code:

%Vor%

Während diese Lösung spezifisch für Oracle-enhanced ist, gehe ich davon aus, dass innerhalb der anderen Adapter die gleiche Methode überschrieben werden kann ( next_sequence_value ).

    
nathanvda 31.03.2011 10:26
quelle

Tags und Links