Это зависит от того, что вы делаете. Иногда все, что вам нужно, это сместить вашу точку зрения с «выполнения действия над ресурсом» на «создание другого, другого, но связанного ресурса».
Голосовать за историю легко: ресурс для голосования, который вы можете создавать, просматривать и т. Д. То же самое с отчетом. Это может быть применено к чему угодно, вместо того, чтобы отмечать Орден как отправленный, вместо этого он будет иметь Представление и т. Д. Ключ должен понять, как преобразовать ваш глагол в существительное.
Пометка письма как прочитанного немного отличается. Для этого я бы использовал виртуальный атрибут: создание собственных методов установки в вашей модели (например, mark_as_read =) позволит вам передать mark_as_read через массив params в действии #Update.
Взять пример голосования по истории. Что бы вы сделали, это создали модель голосования, которая принадлежит истории. Создайте контроллер Votes и вложите его в контроллер Stories в файле маршрутов. затем вы можете использовать свои маршруты вложенных ресурсов (передавая свою запись истории), чтобы легко создавать голоса, ограниченные отдельной историей.
Обратите внимание, что ресурс не обязательно должен быть подкреплен моделью базы данных, хотя это будет правильная форма. В этом случае вы всегда можете просто изменить запись Story, сохраняя при этом RESTfulness и возможность при необходимости легко расширяться до полной модели.