Я получаю сообщение об ошибке с моими маршрутами, когда пытаюсь переопределить 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"}