Подтвердить что ты не робот

Как создать модель с полем перечисления типа?

Я хочу создать модель и соответствующую таблицу базы данных в Rails с помощью генератора script. В таблице базы данных есть поле с типом "enum". Как я могу сгенерировать его?

Определение таблиц в SQL:

create table works {
  id int unsigned not null auto_increment,
  nickname varchar(20) not null,
  sex enum('m', 'f') not null
};

Команда генератора Rails:

script/generator work nickname:string sex:(what should I write here?)
4b9b3361

Ответ 1

Rails 4.1 добавил ActiveRecord::Enum, который эмулирует перечисления с использованием столбца integer -type. Вы можете использовать их, если хотите изменить тип столбца на целое число в базе данных.

Чтобы использовать эти перечисления, поместите integer в свою команду генерации:

bin/rails generate Work nickname:string sex:integer

Затем добавьте вызов enum в сгенерированный файл модели:

class Work < ActiveRecord::Base
  enum sex: [ :male, :female ]
end

Подробнее см. enum документации.

Ответ 2

Вы можете просто использовать строку, а затем добавить проверку на модели следующим образом:

validates_inclusion_of: sex,: in = > % w (m f)

Ответ 3

К сожалению, допустимыми типами столбцов являются: integer, float, datetime, date, timestamp, time, text, string, binary и boolean

Попробуйте сделать столбец строкой и с помощью validates_inclusion_of.