2009-07-16 2 views
17

Я хочу создать модель и соответствующую таблицу базы данных в 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?) 

ответ

5

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

validates_inclusion_of : sex,: in =>% w (mf)

4

К сожалению, va Типы столбцов крышки: integer, float, datetime, date, timestamp, time, text, string, binary и boolean.

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

+0

Ссылка не работает. –

+0

@RishabhSinghal спасибо, я удалил неработающую ссылку. – erik

27

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’s documentation для более подробной информации.

Смежные вопросы