Rails 3.0: ошибка маршрутов при переопределении to_param в модели

Я получаю сообщение об ошибке с моими маршрутами, когда пытаюсь переопределить to_param в моей пользовательской модели, чтобы использовать адрес электронной почты в качестве идентификатора . Кажется, что он пытается сопоставить весь объект для идентификатора, когда пытается сопоставить маршрут. Может ли кто-нибудь помочь мне понять, что мне не хватает?

Вот ошибка:

No route matches {:controller=>"users", :action=>"show", :id=>#<User id: 1, email: ....>}

Вот как я настроил код.

models / user.rb:

attr_accessible :email    

def to_param 
  email
end

controllers / users_controller.rb:

before_filter :get_user, :only=>[:show,:update,:edit,:destroy]

...

def get_user
  @user = User.find_by_email params[:id]
end

config / routes.rb

resources :users

А вот результат rake routes:

     user GET    /users(.:format)          {:controller=>"users", :action=>"index"}
          POST   /users(.:format)          {:controller=>"users", :action=>"create"}
 new_user GET    /users/new(.:format)      {:controller=>"users", :action=>"new"}
edit_user GET    /users/:id/edit(.:format) {:controller=>"users", :action=>"edit"}
     user GET    /users/:id(.:format)      {:controller=>"users", :action=>"show"}
          PUT    /users/:id(.:format)      {:controller=>"users", :action=>"update"}
          DELETE /users/:id(.:format)      {:controller=>"users", :action=>"destroy"}
7
задан Bee 11 February 2011 в 22:11
поделиться