sql >> Databasteknik >  >> RDS >> PostgreSQL

Ny data kvarstår inte i Rails-arraykolumnen på Postgres

Jag misstänker att ActiveRecord inte märker att dina friends arrayen har ändrats eftersom den underliggande arrayreferensen inte ändras när du:

self.friends.push(target)

Det kommer att ändra innehållet av arrayen men själva arrayen kommer fortfarande att vara samma array. Jag vet att detta problem dyker upp med postgres_ext pärla i Rails3 och med tanke på detta problem:

Strängattribut markeras inte som smutsigt när det ändras med <<

Jag förväntar mig att Rails4 skulle bete sig på samma sätt.

Lösningen skulle vara att skapa en ny array istället för att försöka modifiera arrayen på plats:

update_attributes friends: self.friends + [ target ]

Det finns många sätt att skapa en ny array samtidigt som du lägger till ett element i en befintlig array, använd vilken du vill.



  1. Hur man kontrollerar om en användare klickade på [Avbryt] på en InputBox i VBA

  2. Percona Live Dublin - Sammanfattning av evenemanget och våra sessioner

  3. Skapa underhållsplaner i SQL Server

  4. Bästa metoder för skalning av databaser:del två