Rails迁移以添加类型对象类型阵列的列



我想添加类型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上,则可以尝试不同的解决方案,例如:

  1. 数组列类型
   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"](
  1. 或者您可以尝试将数据存储为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

最新更新