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