Bestimmen Sie, ob die Zeichenfolge nur Zahlen enthält
-
26-10-2019 - |
Frage
Ich benutze Friendly_id für meine Strecken in meiner Rails -App.
Ich möchte sicherstellen, dass eine Seite von der numerischen ID nicht besucht werden kann.
Eine Seite ist so zugänglich - www.myurl.com/myfriendlyidstub
Die Seite sollte nicht so zugänglich sein - www.myurl.com/12345 (12345 ist die ID von myfriendlyidstub)
Ich kann keinen Weg sehen, dies in den Dokumenten von Friendly_id zu tun.
Ich überlege also, eine Methode in meinem Controller hinzuzufügen, um zu prüfen, ob der Paramie numerisch ist
def edit
if params[:id].is_numeric? #I need to know how to write this method
not_found #not_found redirects to a 404
end
#rest of the edit action
end
Zwei Fragen -
Wie schreibe ich die Methode "is_numeric"?
Ist das eine gute Möglichkeit, Dinge zu tun? Kannst du Fallstricke sehen?
Lösung
Ich würde a verwenden before_filter
bevor Sie es in jede Methode kleben.
Sie können auch ein Routing konfigurieren Segmentbeschränkung.
Andere Tipps
Es hört sich so an, als ob Sie nur Benutzernamen als Permalink direkt nach dem Root '/' haben möchten ...
config/route.rb
...
match '/:id' => 'controller#show'
...
Danach glaube ich, wenn Sie es richtig einrichten, sollte es als Name anstelle einer ID angezeigt werden.
Übrigens, danke, dass du freundlich findig gemacht hast, ich wollte gerade nach so etwas für mein Projekt suchen.
Lassen Sie mich wissen, ob das hilft.