dostęp do ActiveRecord w routes.rb

Mam pewien problem z routes. Chciałbym pozbyć się goto z takich linków jak:

localhost/goto/africa
localhost/goto/africa/info
localhost/goto/europe
localhost/goto/asia

Chcę aby wszystkie j.w. linki wpadały do :controller => ‘goto’, :action => ‘index’. To nie jest oczywiście żadnym problemem. Problemem jest to,że nie mogę drugiego parametru (słowa po goto) zapisać ręcznie. Tzn. africa, europe, asia itp. muszę pobrać z bazy w pliku z definicjami routes. Problem w tym, że w routes nie mam dostępu do modeli AR. Routes jest chyba inicjowane przed inicjalizacją Active Record, ale nie jestem pewien. Any ideas?

Rozumiem, ze sytuacja jest podobna do

[code]# routes.rb
map.connect ‘’, :controller => ‘welcome’

map.connect ‘:controller/:action/:id’

map.connect ‘:location’, :controller => ‘welcome’
map.connect ‘:location/:category’, :controller => ‘welcome’

welcome_controller.rb

def index
return category if (params[:location] and params[:category])
return located_index if params[:location]
# default /
#
end

protected
def located_index

render :action => … or error page

end

def category

render :action => … or error page

end[/code]
Default route jest powyzej wiec nie powinno to zaklocac calej aplikacji, ale oczywiscie parametry moga byc z nieba wziete. Nie powinno byc problemem bo zakladam ze skads przychodza (select list), lub user dostanie po prostu error page. Jezeli nazwa(permalink) kraju nie powtarza nazwy kontrolera to nic sie nie powinno dziac.

Jezeli jest wymog ich walidacji to, byc moze …

[code]# routes.rb
map.connect ‘:location’,
:controller => ‘welcome’
:location => Country.default,
:requirements => { :location => Country.pattern }

country.rb

self.default
@@default ||= Country.find(:first, :conditions => [“is_default = ?”, 1])
end

self.pattern
@@pattern ||= /#{Country.build_pattern}/
end

def self.build_pattern
Country.find(:all, :select => ‘permalink’).collect {|x| x.permalink}.join("|")
end[/code]