sql >> Databáze >  >> NoSQL >> Redis

Jak udržím has_many :through vztahy při serializaci do JSON a zpět v Rails 4.0.3?

Simuloval jsem přesně stejný scénář jako ten váš a zjistil jsem:

Kdykoli má model (příspěvek) has_many through přidružení a poté při vytvoření instance tohoto modelu, tj. Post předání Hash např.:Post.new( JSON.parse(json) ) nebo Post.new(id: 113) Zdá se, že Rails s nimi zachází jinak, ačkoli ukazují na stejnou desku.

Spustil jsem následující příkazy v pořadí uvedeném níže:

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

Namísto vytvoření nové instance Post pomocí hash přímo, jsem načetl záznam z databáze pomocí id získané deserializací json. V tomto případě instance p3 a instance p2 odkazují na stejný příspěvek, ale Rails je interpretuje odlišně.



  1. Jak funguje SignalR.Redis pod kapotou?

  2. mongoDB/mongoose:jedinečný, pokud není null

  3. Aktualizujte pole v poli přesných prvků v MongoDB

  4. Jaký je rozdíl mezi metodou HSET a HMSET v databázi redis