Как создать модель с полем типа enum? - PullRequest
22 голосов
/ 16 июля 2009

Я хочу сгенерировать модель и соответствующую таблицу базы данных в Rails, используя скрипт генератора. В таблице базы данных есть поле с типом 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?)

Ответы [ 4 ]

40 голосов
/ 21 июня 2015

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

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

bin/rails generate Work nickname:string sex:integer

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

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

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

5 голосов
/ 16 июля 2009

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

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

4 голосов
/ 16 июля 2009

К сожалению, допустимыми типами столбцов являются: целое число, число с плавающей запятой, дата-время, дата, метка времени, время, текст, строка, двоичный код и логическое значение

Попробуйте сделать столбец строкой и использовать validates_inclusion_of.

2 голосов
/ 24 ноября 2013

Используйте enum_column для добавления поддержки enum в активную запись

https://github.com/mdsol/enum_column

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...