2010-01-24 19 views
7

En mi rap lyrics explanation website, cada usuario tiene una asociados "favoritos" página en http://rapgenius.com/USERNAMEMantenga un registro de direcciones URL reservados (para permitir de URL de cada usuario)

Debido a estos favoritos páginas ocupan el espacio de nombres raíz, que tienen que asegurarse que nadie toma un nombre de usuario que ya estoy usando para otra cosa. Por ejemplo:

  • /songs
  • /lyrics
  • /users
  • /posts

¿Cómo puedo buscar todos los caminos de nivel superior que tienen mayor prioridad que la /username ruta (que está en el al final de routes.rb) en el momento de la creación del usuario, así puedo evitar que los usuarios tomen estos nombres reservados.

Respuesta

2

Por qué no hacer las cosas más fáciles para ti y simplemente hacer:

def validate 
    reserved = %w(songs lyrics users posts) 
    errors.add(:username, 'is not allowed') if reserved.include?(username) 
end 
+0

Así que resignarme a actualizar manualmente esta lista cuando agrego un nuevo recurso? Podría ser la menor molestia general aquí, supongo –

+0

No conozco su aplicación, pero de manera realista, ¿con qué frecuencia va a agregar nuevas rutas? Además, el código anterior revela su intención muy claramente y está desacoplado de la vista. Finalmente, el enrutador Rails 3 es un animal diferente, por lo que cualquier código inteligente que utilices para introspectar las rutas ahora está listo para futuras roturas. –

0

Quizás podría hacer uso de this?

Pero parece que aumenta en ninguna coincidencia, por lo que puede que tenga que escribir un contenedor para rescatar a falso en esos casos.

Asimismo, sólo se dio cuenta de que tendría que revisar también cualquier partido para asegurarse de que no es la ruta del usuario que se desea para que coincida con ...

0

dos contra-preguntas:

1) ¿por qué la página "favoritos" para cada usuario necesita para vivir en la raíz de su árbol URI?

2) ¿Cómo se enfrenta actualmente a la situación en la que dos usuarios eligen el mismo nombre de usuario?

1

Si desea extraer en un plugin para hacer esto una útil es friendlyid

De su sitio

FriendlyId es el “bulldozer del ejército suizo” de slugging y enlace permanente plugins para Ruby on Rails . Le permite crear URLs bonitas y trabajar con cadenas amigables para el usuario como si fueran identificadores numéricos para modelos ActiveRecord.

que es más importante para usted que tiene soporte para asegurarse de que las direcciones URL generada no le controladores/caminos

coincidir
Cuestiones relacionadas