allister,
Чтобы сделать это, просто переопределите to_param в вашей модели.Например:
#users.rb
def to_param
self.username
end
Вскоре вы столкнетесь с некоторыми проблемами:
- конфликтует с существующими маршрутами.Например, имя пользователя не должно быть «новым», верно?
- для получения вашего пользователя в контроллере, вы должны создать метод (это то, что я сделал, может быть, не лучшее решение) в вашей модели, какthis self.find_for_controller (имя пользователя)
- ваше имя пользователя должно содержать только символы с поддержкой URL (забудьте акценты, знаки препинания и т. д.).Решением для этого является наличие второго атрибута с именами
username_urlized
, который, конечно, должен быть уникальным и не конфликтовать с другими маршрутами
И, возможно, с другими проблемами:)
Также,если вы хотите что-то вроде твиттера (yoursite.com/dynamicUserName), выполните следующие действия в router.rb:
resources :users, :path=>'' do