У меня есть база данных Postgres. Один из столбцов в одной из моих таблиц состоит из массивов. Это называется aliases
. Я пытаюсь объединить два экземпляра, но когда я пытаюсь объединить массивы, они не сохраняются.
irb(main):001:0> original
=> #<Thing id: 1, name: "Foo", aliases: ["Foo"]>
irb(main):002:0> duplicate
=> #<Thing id: 2, name: "Bar", aliases: ["Bar"]>
irb(main):003:0> original.aliases | duplicate.aliases
=> ["Foo", "Bar"]
irb(main):004:0> original.save!
(0.3ms) BEGIN
Thing Exists (0.8ms) SELECT 1 AS one FROM "thing" WHERE "things"."name" = $1 AND ("thing"."id" != $2) LIMIT $3 [["name", "Foo"], ["id", 1], ["LIMIT", 1]]
(0.3ms) COMMIT
Thing Store (6.1ms) {"id":1}
=> true
Но тогда, когда я проверяю original
, псевдонимы не слились.
irb(main):005:0> original
=> #<Thing id: 1, name: "Foo", aliases: ["Foo"]>
Я пробовал несколько разных способов вставить duplicate.aliases
в original.aliases
, но, похоже, ничего не экономит. Есть идеи почему? Я что-то упустил?
Edit:
Я на Rails 5.1.4 и Ruby 2.5.0p0