Вы можете использовать ограничения в маршрутизации рельсов.Например:
match '*id', :to => 'categories#show', :constraints => TaxonConstraint.new
class TaxonConstraint
def matches?(request)
path = request.path.slice(1..(request.path.length-1)
path = path.split('/')
return false if path.length != path.uniq.length
return true if Category.check(path.last).first
false
end
end
класс разбивает ваш путь на "/" и проверяет db на наличие последнего элемента в dbесли не найден, пропускает маршрут.если кто-нибудь знает, как решить это лучше, был бы рад услышать.