PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Nowe dane nie są zachowywane w kolumnie tablicy Rails w Postgresie

Podejrzewam, że ActiveRecord nie zauważa, że ​​Twoi friends tablica uległa zmianie, ponieważ, cóż, odwołanie do tablicy nie zmienia się, gdy:

self.friends.push(target)

To zmieni treść tablicy, ale sama tablica nadal będzie tą samą tablicą. Wiem, że ten problem pojawia się w przypadku klejnotu postgres_ext w Rails3 i biorąc pod uwagę ten problem:

Atrybut string nie jest oznaczony jako brudny, gdy zmienia się za pomocą <<

Spodziewałbym się, że Rails4 zachowa się w ten sam sposób.

Rozwiązaniem byłoby utworzenie nowej tablicy, zamiast próbować modyfikować tablicę na miejscu:

update_attributes friends: self.friends + [ target ]

Istnieje wiele sposobów tworzenia nowej tablicy podczas dodawania elementu do istniejącej tablicy, użyj tego, który Ci się podoba.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę używać wyzwalaczy PostgreSQL do przechowywania zmian (instrukcje SQL i zmiany wierszy)

  2. Jak mogę zaimportować plik JSON do PostgreSQL?

  3. Usuń rodzica, jeśli nie odwołuje się do niego żadne inne dziecko

  4. Rails 3, ActiveRecord, PostgreSQL - polecenie .uniq nie działa?

  5. Systemy plików Linux i testy punktów kontrolnych PostgreSQL