Я новичок Rails и REST, и я пытаюсь понять, как лучше всего открыть ресурс, который поддерживается объектом домена, который имеет конечный автомат (другими словами, это конечные автоматы).
Я видел несколько камней для создания модельного класса конечной машины, такой как aasm, переходы, рабочий процесс, но ни один из них не документирует примеры того, как они фактически используются в ориентированном на ресурсы контроллере. Все они, похоже, подразумевают, что переходы состояния инициируются "событием", которое действительно является вызовом метода. Некоторые вопросы, которые я имею в связи с этим:
- Действие обновления (метод PUT) не подходит, потому что PUT предполагается идемпотентным. Только это было бы возможно, если бы государство было отправлено как часть представления. Это несогласие с "событием". Правильно ли это?
- Так как события не являются идемпотентными, то необходимо использовать POST. Но, на какой ресурс? Есть ли субресурс для каждого возможного события? Или есть один (/updatestate), который принимает в качестве своего представления событие для запуска и любые параметры для события?
- Поскольку состояние ресурса модифицируется событием, инициируемым потенциально другим ресурсом, должно ли действие create accept изменять атрибут состояния (или любые другие атрибуты, зависящие от конечного автомата)?
- [Обновленный вопрос] Что такое хороший способ разоблачения переходов в пользовательском интерфейсе? Поскольку события не являются состояниями, кажется, что нет смысла разрешать обновлять атрибут состояния (и любой другой атрибут, зависящий от переходов состояний). Означает ли это, что эти атрибуты следует игнорировать в действии обновления?