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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top