PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Dữ liệu mới không tồn tại trong cột mảng Rails trên Postgres

Tôi nghi ngờ rằng ActiveRecord không nhận thấy rằng friends của bạn mảng đã thay đổi vì tham chiếu mảng bên dưới không thay đổi khi bạn:

self.friends.push(target)

Điều đó sẽ thay đổi nội dung của mảng nhưng bản thân mảng sẽ vẫn là mảng cũ. Tôi biết rằng vấn đề này xảy ra với viên ngọc postgres_ext trong Rails3 và do vấn đề này xảy ra:

Thuộc tính chuỗi không bị đánh dấu là bẩn khi nó thay đổi bằng <<

Tôi mong đợi Rails4 sẽ hoạt động theo cách tương tự.

Giải pháp sẽ là tạo một mảng mới thay vì cố gắng sửa đổi mảng tại chỗ:

update_attributes friends: self.friends + [ target ]

Có rất nhiều cách để tạo một mảng mới trong khi thêm một phần tử vào một mảng hiện có, hãy sử dụng bất kỳ cách nào bạn thích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quyền của người dùng PostgreSQL

  2. An toàn chuỗi postgresql cho các bảng tạm thời

  3. Quản lý tính khả dụng cao của PostgreSQL - Phần I:Chuyển đổi dự phòng tự động PostgreSQL

  4. Đăng ký sớm cho PGDay.IT 2011

  5. Sửa đổi giá trị bắt đầu Django AutoField