Rails-миграция для добавления столбца типа массив объектов - PullRequest
0 голосов
/ 24 мая 2019

Я хотел бы добавить столбец типа Array of Objects.

 "users_to_employer":[
     {
       key1 : value,
       key2 : value,
     },
     {
       key1: value,
       key2: value,
     }
  ]

Я застрял в миграции.

add_column :table_name, :column_name, ......

Что писать вместо ......

Ответы [ 2 ]

2 голосов
/ 24 мая 2019

Добавить столбец с текстом типа данных

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

Надеюсь, это поможет вам

0 голосов
/ 24 мая 2019

Если вы используете PostgreSQL, вы можете попробовать разные решения, такие как:

  1. Тип столбца массива
    create_table :table_name do |t|
      ...
      t.string 'array_column_name', array: true
      ...
    end

    add_index :table_name, :array_column_name, using: 'gin'


    # Usage
    YourModel.create(array_column_name: ["value1", "value2"])
Или вы можете попытаться сохранить ваши данные в формате JSON
    create_table :table_name do |t|
      t.json 'json_column_name'
    end

    # Usage
    YoutModel.create(json_column_name: { key1: "val1", key2: ["val21", "val22"]})

и проанализировать ваш json более гибко, для массивов и других структур.

Более подробную информацию вы можете увидеть на Официальная документация по Rails

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...