Я знаю, что этот вопрос может показаться дублированным, но ни одно из решений, которые я нашел, на самом деле не решило мою проблему.
У меня есть модель с именем домашнее животное с колонкой фотографий, вот моя схема:
t.string "photos", default: [], array: true
Я не использую метод сериализации в своем классе, потому что много других sources подтвердили, что в этом нет необходимости.
Вот мой объект:
#<Pet id: 9, name: nil, age: nil, vaccinated: nil, male: nil, pet_description: nil, additional_info: nil, size: nil, neutered: nil, classified_id: nil, created_at: "2016-10-21 23:36:37", updated_at: "2016-10-21 23:55:50", kind: nil, photos: []>
Независимо от того, что я делаю, я не могу сохранить новый массив фотографий:
UPDATE "pets" SET "updated_at" = $1, "photos" = $2 WHERE "pets"."id" = $3 [["updated_at", 2016-10-21 23:51:30 UTC], ["photos", "{}"], ["id", 9]]
Я уже пробовал несколько способов сохранения, например:
model.array << element
model.array_will_change!
model.save!
или даже (как предложил этот парень , а также этот другой парень) :
update_attributes locations: locations + [ place ]
и ни один из них, кажется, не работает.
Используя командную строку Postgres, я смог сохранить и обновить массив без проблем, но эта проблема, похоже, связана с активной записью.
активная запись (5.0.0.1) постгрес (9.6.0.0)
Большое спасибо :-)
model.photos << 'test'; model.save
- person Nikhil   schedule 22.10.2016