Je porte une application Merb sur Rails 3. Dans Merb, nous pourrions mettre un bloc Identify autour d'un itinéraire pour définir comment un paramètre: id route devait être fourni , par exemple,Définition: id dans les routes pour être quelque chose d'autre que id dans rails 3
# this is a Merb route that I want to port to Rails 3 routing; I get everything except
# how to replicate the behavior of Merb's Identify block which doesn't require one to
# futz with overriding to_param on user; a user instance gets passed to the url builder
# ala url(:edit_password_reset, user) and this tells the router to use the
# reset_password_token method on user to supply the :id value for this one route
Identify User => :reset_password_token do
match("/reset-password/:id", :method => :get).to(:controller => "password_resets", :action => "edit").name(:edit_password_reset)
end
# and then later define more routes that use the user's id without a problem
# since to_param was not overridden on user; here I have already translated to
# Rails 3 and this works fine
controller :users do
get "/register", :action => "new", :as => "new_user"
get "/users", :action => "index", :as => "users"
get "https://stackoverflow.com/users/:id", :action => "show", :as => "show_user"
get "https://stackoverflow.com/users/:id/edit", :action => "edit", :as => "edit_user"
put "https://stackoverflow.com/users/:id", :action => "update", :as => "update_user"
post "/users", :action => "create", :as => "create_user"
end
dans Rails, comme dans Merb, vous pouvez remplacer to_param pour fournir une valeur identifiant alternative pour les routes, mais pour un cas où une fois que vous voulez utiliser un identifiant et une autre fois que vous voulez utiliser une méthode différente sur le même objet (comme ci-dessus), identifier est pratique. Quel est l'équivalent de Rails 3? J'ai regardé à travers la source et les tests de Rails 3 et n'ai rien vu d'équivalent à Identifier. Ai-je manqué ça?
Je peux refactoriser les choses et peut-être ne pas en avoir besoin dans ce cas, mais j'aimerais quand même savoir si j'ai raté quelque chose.
Merci.
Je suis curieux de savoir si vous avez déjà trouvé un bon moyen d'implémenter cette fonctionnalité. – dmkash