Redis
 sql >> база данни >  >> NoSQL >> Redis

Как да запазя has_many :through връзки при сериализиране в JSON и обратно в Rails 4.0.3?

Симулирах точно същия сценарий като вашия и разбрах:

Всеки път, когато модел (Post) има has_many through асоциация след това при създаване на екземпляр на този модел, т.е. Post подаване на Hash например:Post.new( JSON.parse(json) ) или Post.new(id: 113) изглежда, че Rails ги третира по различен начин, въпреки че сочат към един и същ запис.

Изпълних следните команди в последователността, дадена по-долу:

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

Вместо да създавам нов екземпляр на Post, използвайки директно Hash, извадих записа от базата данни с помощта на id получен от десериализирането на json. В този случай екземплярът p3 и екземпляр p2 отнасят се до същия пост, но Rails ги тълкува по различен начин.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Heroku Redis - GUI и оптимизация на паметта

  2. Релационна DB в паметта?

  3. Как да създадете собствена база данни в Redis?

  4. Redis търси env redis url променлива не съм сигурен къде да постави env променлива лош URI (не е URI?):(URI::InvalidURIError)

  5. Многопараметричен търсач на съвпадения с Redis