Rails REST par login

Bon je sais que mon titre n'est pas super explicite, je vais donc essayé de clarifier la chose. Je viens de passer à Rails 2.0 qui est RESTful, et forcement la découverte de nouvelles choses entraine son lot de difficultés.

J'avais bien trouvé une méthode pour utiliser dans mes applis Rails des URL de la forme :

http://localhost:3000/users/login

plutôt que

http://localhost:3000/users/id

En trifouillant gentiment le fichier routes.rb, hors depuis Rails 2.0, il y a par défaut une gestion totalement REST des URL, ainsi tout les liens créés automatiquement sont de la forme :

http://localhost:3000/users/id

le choix été donc soit de revenir à la solution précédente, et de perdre tout ce qui est généré automatique, ou de trouver une solution !
Et donc après quelques recherche j'ai fini par trouver cette solution, il suffit de quelques lignes en plus dans le model que vous souhaitez modifier, ici dans mon cas, on touche au UserModel, en ajoutant :

def to_param
    login
end

ce qui va forcer l'utilisation du login plutôt que de l'id à condition bien sur que la colonne dans votre base de donnée soit "login". Il faut aussi pensé à modifier tout les finders du controller correspondant, on passe donc de :

@user = User.find(params[:id])

à

@user = User.find_by_login(params[:id])

Voila c'est tout simple et permet de garder tous les avantages de Rails 2.0