Не используйте логические поля.
Если названия состояний похожи на «ключи» и вряд ли изменятся, вы можете просто сохранить их в виде текстовых полей в базе данных.Просто добавьте миграцию с помощью
add_column :users, :state, :string
. Когда вы сохраняете ваш объект, он принимает user.state и сохраняет символ в виде строки «непроверенный», «активный» и т. Д.
Если в какой-то момент состояния могут быть переименованы, вы можете поместить их в собственную таблицу и создать для них собственную модель активной записи вместо использования символа.сделайте
rails g model State name:string
rails создаст файл модели и перенастроим для них.Затем измените миграцию следующим образом:
add_column :users, :state_id, :integer
Вы можете заполнить список состояний непроверенными, активными и т. Д. Либо непосредственно в sql, либо через начальное число, либо через существующую миграцию.Вы также можете создать внешний ключ между ними, если хотите.
Тогда в вашем коде для установки состояния вы должны использовать это:
user.state = State.find_by_name(:unverified)