Also ich suche nach einer Möglichkeit, eine randomisierte ID zu erstellen, die mit einer Lobby verknüpft wird, die angezeigt wird, wenn die gezeigte Methode in Schienen aufgerufen wird. Im Moment würde die URL wie folgt aussehen: http://localhost:3000/lobby/2. Ich möchte diese 2 durch eine zufällig generierte ID ersetzen, damit Sie diesen Link an Freunde senden können, wenn Sie möchten, dass sie Ihrer Lobby beitreten. Irgendwelche Ideen?Wie können Sie die ID in der URL zufällig machen?
Antwort
Sie sollten ein bisschen mehr Informationen teilen, wie Gavin sagte. Wenn Sie wissen, was Sie bereits ausprobiert haben, können wir Ihnen mehr/bessere Informationen zum weiteren Vorgehen geben.
Ich hoffe, dass dies Ihnen die richtige Richtung sendet. Für zufällige IDs zu erzeugen können Sie Secure verwenden: http://ruby-doc.org/stdlib-1.9.3/libdoc/securerandom/rdoc/SecureRandom.html
Ich würde empfehlen Sie eine weitere Spalte in die lobbies
Tabelle hinzufügen, und machen es einzigartig:
add_column :lobbies, :secure_token, :string, null: false
add_index :lobbies, :secure_token, unique: true
nun in Ihrem Lobby
Modell, wann immer Wenn es erstellt wird, können Sie ein eindeutiges Token generieren. Der Einfachheit halber kann man etwas in dieser Richtung tun:
class Lobby < ActiveRecord::Base
before_create :generate_unique_secure_token
# Rest of the model's code
private
def generate_unique_secure_token
begin
self.secure_token = SecureRandom.urlsafe_base64
end while self.class.exists?(secure_token: secure_token)
end
end
Dies wird eine secure_token
jedes Mal, erzeugen ein Lobby
erstellt wird. Jetzt in der Steuerung können Sie die secure_token
anstelle der id
verwenden, um Ihre Lobby
zu finden. Zum Beispiel:
class LobbiesController < ApplicationController
def show
@lobby = Lobby.find_by(secure_token: params[:id])
end
end
Heads-up, 'find_by_x' wird als Antipattern betrachtet. Die bevorzugte Lösung ist 'find_by (secure_token:
Guter Punkt, Kieran! –
'SecureRandom :: Uuid' ist perfekt für diese Art von Sache. Stellen Sie sicher, dass Ihr System über ausreichende Entropie verfügt! –
Ich werde Ihnen nicht die ganze Antwort geben, da es großartig ist, diese Dinge zu lernen, aber wenn Sie irgendwelche Fragen haben, zögern Sie nicht mich zu fragen! Diese
ist, wo man beginnen soll: URLSafe Base 64
Here's a Railscasts episode, die weich von ähnlich ist, was Sie wollen, sehen, wenn Sie von dort erweitern! Wenn Sie neu bei Rails sind, sollten Sie Railscasts ausprobieren. Alle Pro-Episoden sind kostenlos auf youtube verfügbar!
Vielen Dank! Ich bevorzuge es selbst zu lernen, ich wusste einfach nicht wo ich anfangen soll –
Ich habe gerade den Beitrag aktualisiert. Sehen Sie, was Sie tun können! Wenn Sie Fragen haben, können Sie einen Chat über StackOverflow starten. –
- 1. Wie meine zufällig generierten ID
- 2. Machen Sie die URL
- 3. Machen Sie Use_trans_sid arbeiten (Append Session ID zu URL)
- 4. Wie können Sie Ausnahmen für die URL-Sicherung mit Keycloak machen?
- 5. iPhone: Wie UIButton zu machen, die Sie leicht tippen können?
- 6. Können Winsock-Verbindungen zufällig fehlschlagen?
- 7. Erstelle eine eindeutige ID für die URL
- 8. wie id in url passieren
- 9. Wie erhalten Sie die URL-Fragment-ID von HttpServletRequest
- 10. Können Sie einen inkrementierenden Compiler konstant machen?
- 11. Wie bekomme ich die Facebook-Album-ID von der URL?
- 12. Wie können Werte in einer Karte zufällig gemischt werden?
- 13. Magento getProductUrl() gibt nicht die richtige URL zurück (zufällig?)
- 14. Wie können Sie Abfragezeichenfolgen von der URL verbergen?
- 15. Wie können Sie Admob ID in App setzen, wenn Sie nur ID bekommen, nachdem Sie die App veröffentlichen
- 16. Django .id Verwendung in der URL-Funktion
- 17. Wie können Sie ein sicheres statisches Singleton in Rust machen?
- 18. URL.Action enthält ID beim Erstellen der URL
- 19. Wählen Sie zufällig einen Knoten in XSLT
- 20. Sie können die Google Cloud Platform-Projekt-ID ändern?
- 21. URL Bar id = 1 In jQuery ID
- 22. Wie URL in php kurz machen?
- 23. Rufen Sie nur die Kategorie ID aus URL
- 24. Wie können Sie die chromeOptions-Zoomstufen anpassen, ohne sich Gedanken darüber machen zu müssen, dass diese ID weitergegeben werden muss?
- 25. Wie machen Sie die Potenzierung in C?
- 26. Machen Sie ausdrücklich bestimmte URL-Änderungen ignorieren
- 27. Wie kann ich die Gerrit ID in der Benutzeroberfläche anzeigen?
- 28. Erhalte die ID von explodierender URL
- 29. So extrahieren Sie die YouTube-ID aus dieser URL
- 30. Facebook PHP api: "no url set" - zufällig
Ich habe eine Idee, wie man das macht. Ich bin sehr gut zu Schienen –