Маршрутизация не поможет вам, поскольку она предназначена только для использования в обратном направлении.
Что вы можете сделать, так это навязать отношения с: parent:
class Task
belongs_to :project
alias :project :parent
end
И затем используйте это отношение, чтобы определить, доступен ли родительский объект:
if object.respond_to?(:parent)
# do something
end
Кроме того, вы можете использовать полиморфные маршруты, если маршруты настроены правильно:
polymorphic_url([object.parent, object])