Чтобы расширить ответ Камала, вам не нужно определять га sh, а затем устанавливать перечисление. Вместо этого вы можете использовать массив символов.
enum status: %i[pending scheduled runnin]
Когда вы можете получить доступ / просмотреть перечисление ha sh с помощью Check.statuses
, которое вернет {pending: 0, scheduled: 1, runnin: 2}
и просто как он сказал:
check = Check.first
puts check.status
Перечисление Rails также дает вам доступ к областям действия и методам экземпляра.
Check.pending # returns ALL pending checks
# if check belongs to any other model....
other = Other.first
other.checks.pending # returning all pending checks that belong to the instance of other model
#boolean checks
check = Check.first
check.pending? # returns true or false if the check has the enum 0
# setting the enum
check = Check.first
check.pending! # sets and saves the check's status as pending
А затем установить значение по умолчанию, как сказал Камаль
t.integer, :status, default: 1, null: false, index: true
Что касается установки 3 различных значений по умолчанию, вы не можете. Вам нужно выбрать одно из значений перечисления и установить его по умолчанию, как указано выше.
При создании Check
вы можете установить значение либо с помощью !
, показанного выше, либо в параметрах создания, если вы хотите установить для него значение, отличное от значения по умолчанию:
pending_status = Check.statuses[:pending]
Check.create(status: pending_status)
Этот метод полезен, поэтому вам не нужно беспокоиться о положении перечислений, если они впоследствии изменятся в процессе разработки.
Перечисление рельсов