PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Data baru tidak bertahan ke kolom array Rails di Postgres

Saya menduga bahwa ActiveRecord tidak memperhatikan bahwa friends Anda array telah berubah karena, yah, referensi array yang mendasarinya tidak berubah ketika Anda:

self.friends.push(target)

Itu akan mengubah konten dari array tetapi array itu sendiri akan tetap menjadi array yang sama. Saya tahu bahwa masalah ini muncul dengan permata postgres_ext di Rails3 dan diberikan masalah ini:

Atribut string tidak ditandai sebagai kotor, ketika berubah dengan <<

Saya berharap Rails4 berperilaku dengan cara yang sama.

Solusinya adalah dengan membuat larik baru daripada mencoba memodifikasi larik di tempat:

update_attributes friends: self.friends + [ target ]

Ada banyak cara untuk membuat larik baru sambil menambahkan elemen ke larik yang sudah ada, gunakan mana saja yang Anda suka.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Anotasi hibernasi untuk tipe serial PostgreSQL

  2. Bagaimana POSITION() Bekerja di PostgreSQL

  3. Migrasi Rails:Bigint di PostgreSQL tampaknya gagal?

  4. PostgreSQL 9.1:Cara menggabungkan baris dalam array tanpa duplikat, GABUNG tabel lain

  5. Apakah SELECT atau INSERT dalam suatu fungsi rentan terhadap kondisi balapan?