Хорошо, я нашел способ, но если это будет лучше или нет, я не могу сказать.
Я использую пользовательский ограничитель, как это:
class CharitiesRestrictor
def self.matches?(request)
slug = request.path_parameters[:path]
!Charity.find_by_name(slug).nil?
end
end
constraints CharitiesRestrictor do
match '*path' => 'charities#show_by_slug', :constraints => CharitiesRestrictor.new
end
Когда я создаю такой блок для каждой из моих пар модель / контроллер, которые должны быть в состоянии реагировать на постоянные ссылки, я могу дать им всем возможность воздействовать на постоянную ссылку. Однако это также означает, что все они вызываются последовательно, что не обязательно идеально.