如何使用枚举类型字段生成模型?

25 enums ruby-on-rails

我想使用生成器脚本在Rails中生成模型和相应的数据库表.数据库表具有"枚举"类型的字段.我该如何生成它?

表中SQL的定义:

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

Rails生成器命令:

script/generator work nickname:string sex:(what should I write here?)
Run Code Online (Sandbox Code Playgroud)

Ror*_*ane 41

添加了Rails 4.1 ActiveRecord::Enum,它使用integer-type列模拟枚举.只要您愿意将列类型更改为数据库中的整数,就可以使用它们.

要使用这些枚举,请integer输入您的generate命令:

bin/rails generate Work nickname:string sex:integer
Run Code Online (Sandbox Code Playgroud)

然后enum在生成的模型文件中添加一个调用:

class Work < ActiveRecord::Base
  enum sex: [ :male, :female ]
end
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅Enum文档.


cak*_*rus 6

你可以使用一个字符串然后在模型上添加验证,如下所示:

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


eri*_*rik 5

不幸的是,有效的列类型是:整数,浮点数,日期时间,日期,时间戳,时间,文本,字符串,二进制和布尔值

尝试将列设置为字符串并使用validates_inclusion_of