PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Nuovi dati non persistenti nella colonna dell'array Rails su Postgres

Sospetto che ActiveRecord non si accorga dei tuoi friends l'array è cambiato perché, beh, il riferimento all'array sottostante non cambia quando tu:

self.friends.push(target)

Ciò modificherà i contenuti dell'array ma l'array stesso sarà sempre lo stesso array. So che questo problema si presenta con la gemma postgres_ext in Rails3 e dato questo problema:

L'attributo stringa non è contrassegnato come sporco, quando cambia con <<

Mi aspetto che Rails4 si comporti allo stesso modo.

La soluzione sarebbe creare un nuovo array invece di provare a modificare l'array sul posto:

update_attributes friends: self.friends + [ target ]

Esistono molti modi per creare un nuovo array aggiungendo un elemento a un array esistente, usa quello che preferisci.