Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Làm cách nào để giữ has_many:thông qua các mối quan hệ khi tuần tự hóa thành JSON và trở lại trong Rails 4.0.3?

Tôi đã mô phỏng chính xác tình huống giống như của bạn và phát hiện ra:

Bất cứ khi nào một mô hình (Bài đăng) có has_many through sau đó liên kết khi tạo một phiên bản của Mô hình đó, tức là Post chuyển Hash ví dụ:Post.new( JSON.parse(json) ) hoặc Post.new(id: 113) Có vẻ như Rails xử lý chúng theo cách khác nhau mặc dù chúng đang trỏ đến cùng một bản ghi.

Tôi đã chạy các lệnh sau theo trình tự như dưới đây:

p = Post.last
p.tags
p.tags.count
json = p.to_json

p2 = Post.new( JSON.parse(json) )
p2.tags
p2.tags.count   ## Gives incorrect count

p3 = Post.find(JSON.parse(json)["id"])    ### See notes below
p3.tags
p3.tags.count   ## Gives the correct count

Thay vì tạo một bản sao mới của Post bằng cách sử dụng Hash trực tiếp, tôi đã tìm nạp bản ghi từ cơ sở dữ liệu bằng cách sử dụng id thu được từ json deserializing. Trong trường hợp này, phiên bản p3 và phiên bản p2 tham chiếu đến cùng một Bài đăng nhưng Rails diễn giải chúng theo cách khác nhau.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis sub / pub và php / nodejs

  2. Dữ liệu mùa xuân Redis hoạt động HGETALL

  3. làm thế nào để hết hạn một khóa bản đồ trong REDIS?

  4. Cách lưu trữ và truy xuất từ ​​điển với redis

  5. Cách tốt nhất để sử dụng Redis trong môi trường Rails đa luồng là gì? (Puma / Sidekiq)