我想添加类型Array of Objects
的列。
"users_to_employer":[
{
key1 : value,
key2 : value,
},
{
key1: value,
key2: value,
}
]
我被困在迁移中。
add_column :table_name, :column_name, ......
写什么代替……
添加带有数据类型文本的列
add_column :table_name, :column_name, :text, default: "" #Field type should be text to store array of hashes
在您的模型中序列化将其转换为数组
class TableName < ActiveRecord::Base
serialize :column_name, Array
end
希望这对您有帮助
如果您在PostgreSQL上,则可以尝试不同的解决方案,例如:
- 数组列类型
create_table:table_name do | t | ... T.String" array_column_name',数组:true ... 结尾 add_index:table_name,:array_column_name,使用:'gin' # 用法 yourmodel.create(array_column_name:[" value1"," value2"](
- 或者您可以尝试将数据存储为JSON
create_table:table_name do | t | T.JSON'JSON_COLUMN_NAME' 结尾 # 用法 youtmodel.create(json_column_name:{key1:" val1",key2:[" val21"," val22"]}(
和解析您的JSON更加灵活,以数组和其他结构。
您可以在官方铁路文档中看到更多信息
add_column :table_name, :column_name, :string, array: true