Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 添加具有多个状态的列_Ruby On Rails_Database_Rails Migrations - Fatal编程技术网

Ruby on rails 添加具有多个状态的列

Ruby on rails 添加具有多个状态的列,ruby-on-rails,database,rails-migrations,Ruby On Rails,Database,Rails Migrations,如何通过rails迁移添加具有多个状态的列?我知道布尔可以有两种状态。但是如果我想要两个以上的州呢 如果我希望列有4个状态,我应该在下面的命令中包括什么?这4个州将被称为“大”、“中”、“小”、“超小” 除非您有令人信服的性能问题,否则使用简单的VARCHAR(:string类型)列通常是可以的 将有效状态存储在数组中,您可以在模型上设置验证,以确保提供的状态正确。如果需要存储一组特定的值,枚举数可能会感兴趣 Rails中的枚举数 第一个解决方案是使用ActiveRecord::Enum(请参阅

如何通过rails迁移添加具有多个状态的列?我知道布尔可以有两种状态。但是如果我想要两个以上的州呢

如果我希望列有4个状态,我应该在下面的命令中包括什么?这4个州将被称为“大”、“中”、“小”、“超小”


除非您有令人信服的性能问题,否则使用简单的
VARCHAR
:string
类型)列通常是可以的


将有效状态存储在数组中,您可以在模型上设置验证,以确保提供的状态正确。

如果需要存储一组特定的值,枚举数可能会感兴趣

Rails中的枚举数

第一个解决方案是使用
ActiveRecord::Enum
(请参阅)

例如:

class Conversation < ActiveRecord::Base
  enum status: [ :active, :archived ]
end
不过,使用此解决方案,约束是强制的,但是如果您需要在集合中添加新值,则需要进行数据库迁移

文件:

class Conversation < ActiveRecord::Base
  enum status: [ :active, :archived ]
end
CREATE TABLE shirts (
  name VARCHAR(40),
  size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
);