Couldn't you f.ex add an URL field in the DB to which you assign some random string like xWa2IUhkjwq23 when you create the page, and then you could use:
@page = Page.find_by_url(params[:url])
in your Page model you could also add the following:
def to_param url end
That returns the url-parameter we added instead of the ID in cases where the ID would normally be returned. Remember that you have to use find_by_url when doing this!
You could also use the following
# Returns somethink like this # 21-asdKjiWAOdl # which would be rather easy to guess if the user # isn't totally dumb def to_param "#{id}-#{url}" end
Rails will extract the ID when it needs it with some magic, but the addresses are going to be a lot easier to guess! In this case you could just use the normal Page.find()
Your routes could look something like this:
map.connect ":controller/:action:/:url"
Hope this helps.
S