Im Moment habe ich einen Code, der wie folgt aussieht:Kürzere Code, verhindern duplizierten Anruf
def work_with_access_token_or_request_one
if is_valid_access_token?(params[:code])
request_client_with_access_token(params[:code])
else
request_access_token!
end
end
Bei diesem Verfahren I erste Prüfung, wenn der Code, den ich in den params bekommen gültig ist. Wenn nicht, fordere ich eins an.
Mein Problem ist, dass gerade jetzt die Methode get_access_token
ist zweimal genannt. Einmal wenn ich überprüfe ob das access_token gültig ist und das andere mal wenn ich den Client anfrage.
def get_access_token(code)
return Okto.request_access_token_from_code(code)
end
Ich habe, dies zu tun, weil die Ausgabe von get_access_token(code)
kehrt zurück, wenn erfolgreich {access_code: 89283}
oder wenn ein Fehler {error: "not valid"}
def is_valid_access_token?(code)
result = get_access_token(code)
return result[:access_code]
end
def request_client_with_access_token(code)
result = get_access_token(code)
client = Okto.get_client_from_access_code(result[:acess_code])
end
aufgetreten Wie kann ich meinen Code in work_with_access_token_or_request_one
umschreiben, so dass nur ein einziges Mal die Methode get_access_token
wird genannt? Danke
Sind 'code' und' get_access_token (code) 'logisch äquivalent? Wenn sie dann sind, sollte alles, was mit einem 'Code' arbeitet, auch funktionieren, wenn 'get_access_token (code)' angegeben wird. Dann könnten Sie in einer 'code.to_access_token'-Methode, die' get_access_token (self) 'auf einem Code aufruft und eine" self-Funktion zurückgibt ", wenn sie auf einem Zugriffstoken aufgerufen wird, einen Patch ausführen. Dann könnten Codes das Token intern zwischenspeichern (oder der Aufrufer könnte 'to_access_token' aufrufen) und diese beiden Methoden würden einfach' result = code.to_access_token' sagen und es wäre egal, was sie bekommen. Könnte hässlich sein, wenn alles nur Strings und Hashes sind. –
SO Leser sind meist Erwachsene, so dass Sie bestimmte Wörter und Sätze nicht fett stellen müssen. –