sql >> Databasteknik >  >> NoSQL >> Redis

Hur behåller jag has_many :through-relationer när jag serialiserar till JSON och tillbaka i Rails 4.0.3?

Jag simulerade exakt samma scenario som ditt och fick reda på:

Närhelst en modell(Post) har en has_many through association sedan när du skapar en instans av den modellen, dvs. Post skicka en Hash till exempel:Post.new( JSON.parse(json) ) eller Post.new(id: 113) verkar som att Rails behandlar dem olika även om de pekar på samma rekord.

Jag körde följande kommandon i sekvensen nedan:

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

Istället för att skapa en ny instans av Post med Hash direkt, hämtade jag posten från databasen med id erhålls från deserialisering av json. I det här fallet, instansen p3 och instans p2 hänvisar till samma inlägg men Rails tolkar dem olika.



  1. exkludera fält i $lookup-aggregation

  2. Hur skapar jag en resque worker automatiskt vid uppstart?

  3. Snabbaste sättet att lagra en numpy array i redis

  4. Redis Databas TTL