В Rails глобально доступен только один объект с данным состоянием - PullRequest
0 голосов
/ 18 декабря 2011

Я использую Rails 3.1 и Mongoid.

Я использую контроллеры RESTful.

У меня есть класс, скажем, описание.

Этот класс имеет атрибут с именем: состояние с двумя (может быть, когда-нибудь) допустимыми значениями, такими как: активный и: рабочий.

Мой клиент хочет иметь N рабочих версий (: работающих), но одну и только одну: активное описание каждый раз. Это означает, что когда я #активирую описание, старый активный должен быть деактивирован.

Дело в том, что я использовал подход обратного вызова (before_validation =>: deactivate_previous_description). Это нормально, пока я пытаюсь активировать рабочую копию. Но когда я делаю то же самое с описанием: active, оно деактивируется, потому что обратный вызов переключает свое состояние обратно на: working.

Что я делаю не так? Есть ли лучший способ решить эту проблему?

1 Ответ

0 голосов
/ 18 декабря 2011

Любой драгоценный камень act_as_state_machine (aasm) кажется лучшей идеей, чем повторная реализация.

...