PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Nouvelles données ne persistant pas dans la colonne de tableau Rails sur Postgres

Je soupçonne qu'ActiveRecord ne remarque pas que vos friends array a changé parce que, eh bien, la référence de tableau sous-jacente ne change pas lorsque vous :

self.friends.push(target)

Cela modifiera le contenu du tableau, mais le tableau lui-même sera toujours le même tableau. Je sais que ce problème surgit avec le gem postgres_ext dans Rails3 et compte tenu de ce problème :

L'attribut de chaîne n'est pas marqué comme sale, lorsqu'il change avec <<

Je m'attendrais à ce que Rails4 se comporte de la même manière.

La solution serait de créer un nouveau tableau plutôt que d'essayer de modifier le tableau sur place :

update_attributes friends: self.friends + [ target ]

Il existe de nombreuses façons de créer un nouveau tableau tout en ajoutant un élément à un tableau existant, utilisez celui que vous préférez.