sql >> Database >  >> RDS >> PostgreSQL

Nieuwe gegevens blijven niet behouden in de Rails-arraykolom op Postgres

Ik vermoed dat ActiveRecord niet merkt dat je friends array is veranderd omdat, nou ja, de onderliggende arrayverwijzing verandert niet wanneer je:

self.friends.push(target)

Dat verandert de inhoud van de array, maar de array zelf zal nog steeds dezelfde array zijn. Ik weet dat dit probleem zich voordoet met de postgres_ext-edelsteen in Rails3 en gezien dit probleem:

Tekenreekskenmerk is niet gemarkeerd als vies, wanneer het verandert met <<

Ik zou verwachten dat Rails4 zich op dezelfde manier zou gedragen.

De oplossing zou zijn om een ​​nieuwe array aan te maken in plaats van te proberen de array ter plekke aan te passen:

update_attributes friends: self.friends + [ target ]

Er zijn veel manieren om een ​​nieuwe array te maken terwijl je een element aan een bestaande array toevoegt, gebruik de gewenste.



  1. Hoe kom ik erachter wanneer een Oracle-tabel de laatste keer is bijgewerkt?

  2. Zorg ervoor dat PostgreSQL soms een slecht queryplan kiest

  3. ORA-01658:kan INITIAL-extent niet maken voor segment in tabelruimte TS_DATA

  4. Wat zijn PLSQL-records in Oracle?