Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Jak zachować relacje has_many :through podczas serializacji do JSON iz powrotem w Rails 4.0.3?

Zasymulowałem dokładnie ten sam scenariusz jak twój i dowiedziałem się:

Zawsze, gdy model (Post) ma has_many through powiązanie następnie po utworzeniu instancji tego modelu, tj. Post przekazywanie Hash na przykład:Post.new( JSON.parse(json) ) lub Post.new(id: 113) wygląda na to, że Railsy traktują je inaczej, chociaż wskazują na ten sam rekord.

Uruchomiłem następujące polecenia w kolejności podanej poniżej:

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

Zamiast tworzyć nową instancję Posta bezpośrednio przy użyciu Hash, pobrałem rekord z bazy danych za pomocą id uzyskane z deserializacji json. W tym przypadku instancja p3 i instancja p2 odnoszą się do tego samego posta, ale Rails interpretuje je inaczej.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Złożone struktury danych Redis

  2. Transakcje i obserwuj wyciąg w Redis

  3. Pojedynczy frontend i backend pamięci podręcznej

  4. Pomiń / Mock Redis w Junit

  5. Limit szybkości interfejsu API (wiosna MVC)