POST не идемпотентен, то есть, если вы отправляете один и тот же запрос POST много раз, вы получите много новых предметов. PUT должен быть идемпотентным, поскольку одно и то же обновление, происходящее на одном и том же ресурсе, не должно иметь побочных эффектов при многократном выполнении.
Что касается того, куда должно идти это действие, оно действительно зависит от вашей эстетической восприимчивости и от того, насколько хардкорным вы хотите быть в отношении REST по сравнению с поддержанием ваших контроллеров Rails чистыми и хорошо организованными.
Конечно, можно утверждать, что DeletedBob отличается от ресурса Bob. Вы могли бы сказать, что PUT, отправленный на DeletedBobsController, обновит ресурс DeletedBob, возможно, с помощью параметра, например «удалено = ложь», чтобы указать цель обновления.
Вы также можете рассматривать удаление как ресурс. Затем вы можете использовать DELETE на контроллере DeletionsController с параметрами «resource_type = bob & resource_id = 23». Уничтожив удаление, вы восстанавливаете исходный объект. Последующие идентичные вызовы приведут к ошибке «объект не найден», как и следовало ожидать с DELETE.
Лично, с тех пор, как вышел Рой Филдинг (первоначальный автор диссертации, определяющей REST) и сказал, что на самом деле нет ничего плохого в POST , я бы рассмотрел определение дополнительного метода :put => :restore
и маршрута на моем BobsController , Он хранит код там, где этого ожидают другие программисты, и они, вероятно, единственная аудитория для такого дизайна.