Ich baue ein Juwel, in dem ich ein Modul haben OtpGenerator
. Innerhalb dieses Moduls habe ich Methoden wie generate_otp
, verify_otp
usw. Dies ist nur ein Anfang für mich und seine sehr einfache Juwel nur zu generieren und zu verifizieren und speichern und senden, nichts anderes. Jetzt muss jeder, der dieses Juwel benutzt, dieses Modul in sein Modell aufnehmen. für z.B. Es gibt ein user
Modell. jetzt, was ich will, ist zunächst wird erstelle ich eine Instanzwie mixin gem-modules in ruby-on-rails modell
user = User.new(params[:user])
jetzt muss ich den Betrieb user.generate_otp
tun, wird diese OTP ähnliche Dinge in der Active Instanz zuweisen.
danach user.save
, die auch in Ordnung ist.
Aber ich möchte auch eine Funktion generate_otp!
, die alle Aufgabe wie otp erzeugt, als speichern und senden es. Mein Problem ist, dass ich nicht verstehe, wie ich diese Funktionalität erreichen kann.
Hinweis: Ich bin sehr neu in Ruby. und wirklich verwirrt mit Mixins.
hier ist mein Code für otp.rb
Datei
require 'securerandom'
module OtpGenerator
def generate_otp
#do something here
end
def verify_otp(otp)
#do something here
end
def regenerate_otp
#do something here
end
def matches?(generated, otp)
#do something here
end
def expired?(otp_expiry_time)
#do something here
end
end
Dieser Code noch in der Entwicklung ist, ich will nur wissen, dass, wie generate_otp!
Funktion zu implementieren, die alle drei Operation tun wird, dh (1) erzeugt oTP (user.generate_otp) (2) speichert oTP (user.save) (3) sendet oTP (ich habe die Sendefunktion erstellt, so dass nicht ein Problem das ist.)
beantwortet, wie Sie die generate_otp erwähnt! sollte so einfach sein wie du es beschrieben hast! füge die drei Methoden in der Reihenfolge hinzu, in der sie ausgeführt werden sollen. Ein Problem, das ich tatsächlich sehen konnte, ist, dass selbst das erzeugte OTP anscheinend nirgends gespeichert wird, was ein kleines Problem ist, da ich sicher bin, dass die Verifikation einen Verweis auf diese – oreoluwa
'generate_otp!' Methode benötigt das Modul meines Edelsteins, das zum Modell hinzugefügt wird. Jetzt, wenn 'user.generate_otp!' aufgerufen wird, bin ich mir nicht sicher, wie ich 'user.save' in meinem Modul implementieren werde. – Sinscary