Custom URL routing based on usernames


#1

Hi all,

I have an application which has a number of users, each with their own
usernames. I am able to setup URLrouting where I can do something like

http://myapp.com/charlie63

and that to call a chosen controller, action and passing charlie63 as
the id. So that’s fine.

This is probably a stupid question, but to prevent problems, do I
simply have to have a list of unavailable usernames and not allow
people to create accounts with those as usernames? In other words, if
I have a controller named, checkout, I need to not allow anyone to
create a user name checkout, because when she tried to access her
account through her URL http://myapp.com/checkout it will actually go
to controller: checkout and action: index?

If this is so, do I just need to manually maintain a list of invalid
user names and check against those? Or can I call something in Rails
to help me to look for existing controllers? Although, I guess I have
to be careful because someone may create an account, use that for a
while, and later on I may come along and create a controller with the
same username.

Any help in getting something like this going, pointers, would be
greatly appreciated.

Cheers,
Diego


#2

OK, think I’ve got it. I just need to place the routing rules for the
username before the standard controller/action/id one which is there
by default with a Rails app. So, even if I have a username with the
same name as a controller, it will be found if it exists. Otherwise
the controller’s routing rule will be evaluated.


#3

Diego wrote:

OK, think I’ve got it. I just need to place the routing rules for the
username before the standard controller/action/id one which is there
by default with a Rails app. So, even if I have a username with the
same name as a controller, it will be found if it exists. Otherwise
the controller’s routing rule will be evaluated.

You can take it a step further and use our resource hacks plugin for
Rails. :slight_smile:

One of our developers recently blogged about it.

Cheers,

-Robby


Robby R.


http://www.robbyonrails.com/


#4

Thanks Robby, I’ll check it out.