См. официальную документацию для ActiveRecord::Enum
- идея не в том, чтобы иметь два имени атрибута (unit
и frequency_unit
);у вас должен быть только один . (В конце концов, это то же самое!)
Давайте изменим вашу модель на:
class OrderFrequency < ApplicationRecord
# Note: Specifying the (default) table_name here is also redundant
enum unit: { hour: 1 }
end
Теперь вы можете создать запись с помощью:
OrderFrequency.create(
value: 'value 123',
unit: OrderFrequency.units['hour']
)
Или даже(!!) просто записав:
OrderFrequency.create(
value: 'value 123',
unit: 'hour'
)
Основная идея с ActiveRecord::Enum
заключается в том, что в базе данных значение сохраняется как целое число, но в приложении (99% времени) вы можете работать с удобными для человека String
с - то есть "hour"
, а не 1
.
Если по какой-то причине вам необходимо получитьсписок всех известных unit
s, вы можете сделать это с помощью:
OrderFrequency.units.keys #=> ['hour']