sql >> Base de Datos >  >> RDS >> PostgreSQL

Nuevos datos que no persisten en la columna de matriz de Rails en Postgres

Sospecho que ActiveRecord no se da cuenta de que tus friends matriz ha cambiado porque, bueno, la referencia de matriz subyacente no cambia cuando:

self.friends.push(target)

Eso alterará los contenidos de la matriz, pero la matriz en sí seguirá siendo la misma matriz. Sé que este problema surge con la gema postgres_ext en Rails3 y dado este problema:

El atributo de cadena no está marcado como sucio, cuando cambia con <<

Espero que Rails4 se comporte de la misma manera.

La solución sería crear una nueva matriz en lugar de intentar modificar la matriz en el lugar:

update_attributes friends: self.friends + [ target ]

Hay muchas formas de crear una nueva matriz mientras agrega un elemento a una matriz existente, use la que desee.