Pregunta

Estoy usando Friendly_id para mis rutas en mi aplicación Rails.

Quiero asegurarme de que la identificación numérica no pueda visitar una página.

Se puede acceder a una página como esta - www.myurl.com/myfiendlyidstub

La página no debe ser accesible de esta manera: www.myurl.com/12345 (12345 es la identificación de MyFriendlyIdStub)

No puedo ver una manera de hacer esto en los documentos de Friendly_id.

Así que estoy considerando agregar un método en mi controlador para verificar si el par es numérico

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

Dos preguntas -

¿Cómo escribo el método 'is_numeric'?

¿Es esta una buena forma de hacer las cosas? ¿Puedes ver alguna trampa?

¿Fue útil?

Solución

Usaría un before_filter antes de pegarlo en cada método.

También puede configurar un enrutamiento restricción de segmento.

Otros consejos

Parece que solo quieres tener nombres de usuario como un enlace permanente justo después de la raíz '/' ...

config/route.rb
...
match '/:id' => 'controller#show'
...

Después de eso, creo que si lo configura correctamente, debe mostrar como un nombre en lugar de una identificación.

Por cierto, gracias por encontrar Friendly_id, estaba a punto de comenzar a buscar algo así para mi proyecto.

Avísame si eso ayuda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top