Если все, что вы хотите сделать, это подтвердить, вы можете использовать
validates_uniqueness_of :boolean_attribute, if: :boolean_attribute
Просто добавь это в свой модельный класс. Это подтвердит, что для модели только один boolean_attribute имеет значение true.
Обратите внимание, что вам придется обойти атомарность переключения boolean_attribute из одного экземпляра в другой.
В зависимости от того, какую базу данных вы используете, вы можете решить ее с помощью транзакции. Если ваша база данных не поддерживает транзакции, вам, возможно, придется найти лучший способ гарантировать согласованность данных (например, у нас есть выделенная модель, которая указывает на «активную» модель и полностью удаляется boolean_attribute
, или заменяется boolean_attribute
целое число, которое может быть атомарно увеличено (наибольшее число, представляющее активное).