sql >> Database teknologi >  >> NoSQL >> Redis

Hvordan beholder jeg has_many :through-relationer, når jeg serialiserer til JSON og tilbage i Rails 4.0.3?

Jeg simulerede nøjagtig det samme scenarie som dit og fandt ud af:

Når en model(Post) har en has_many through tilknytning derefter ved oprettelse af en forekomst af denne model, dvs. Post sende en Hash f.eks.:Post.new( JSON.parse(json) ) eller Post.new(id: 113) Det ser ud til, at Rails behandler dem forskelligt, selvom de peger på den samme rekord.

Jeg kørte følgende kommandoer i rækkefølgen som angivet nedenfor:

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

I stedet for at oprette en ny forekomst af Post ved hjælp af Hash direkte, hentede jeg posten fra databasen ved hjælp af id hentet fra deserialisering af json. I dette tilfælde er instansen p3 og instans p2 referer til det samme indlæg, men Rails fortolker dem forskelligt.



  1. Kører MongoDB på DigitalOcean

  2. 6 bedste praksis for implementering af MongoDB på Amazon EC2

  3. Hadoop MapReduce jobudførelse flowdiagram

  4. Brug mongoexport med en --query for ISODate