Добавляя ответ Пауло, возможно, было бы лучше направить на различные действия, основанные на параметре коммита.
Мы решили использовать расширенные ограничения в рельсах.
Идея состоит в том, чтобы иметь один и тот же путь (и, следовательно, один и тот же названный маршрут и действие), но с ограничениями, маршрутизирующими к различным действиям.
resources :plan do
post :save, constraints: CommitParamRouting.new("Propose"), action: :propose
post :save, constraints: CommitParamRouting.new("Finalize"), action: :finalize
end
CommitParamRouting
- это простой класс, имеющий метод matches?
, который возвращает значение true, если параметр коммита соответствует данному атрибуту экземпляра. значение.
Доступен как драгоценный камень commit_param_matching .