Find User by Token


I have spent the last couple of hours Googling and trying any thing
that i think will work but i haven’t any luck. :frowning:

Here is an outline of what I am trying to do.

I want to show a use there info by going to “http://localhost:3000/
users/5c6e957b523f931fdda3e9922b680c2d868cf44b” (random token)

This is what I have in the routes file and the controller.


Reg::Application.routes.draw do
resources :users

root :to => “users#new”

match “/users/:token” => “users#show”


def show
@user = User.find(params[:token])

At the moment it is giving me this error.

Started GET “/users/5c6e957b523f931fdda3e9922b680c2d868cf44b” for at 2011-01-30 09:54:23 +1100
Processing by UsersController#show as HTML
Parameters: {“id”=>“5c6e957b523f931fdda3e9922b680c2d868cf44b”}
Completed in 10ms

ActiveRecord::RecordNotFound (Couldn’t find User without an ID):
app/controllers/users_controller.rb:7:in `show’

This is one of my first rails apps so I don’t know exactly what is
causing it - I guess that it will be a simple thing :slight_smile:

Thanks for you help.

Can i have your view source code(I mean view in mvc).

Instead of this
def show
@user = User.find(params[:token])

def show

If id is the column in development table

if you want to find details by username you can use

In general


The problem is in the routes. The first match found will be what that
url is routed to, so when you declared resources :users, it defines /
users/:id to match users#show.

Try this:

Reg::Application.routes.draw do
resources :users, :except => [:show]

root :to => “users#new”

match “/users/:token” => “users#show”, :via => :get

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs