Vous pouvez effectuer un post-traitement. Vous devrez donner des noms séparés pour les clés 'id' à l'intérieur de vos sous-états, mais si vous faites cela, quelque chose comme ça devrait fonctionner ... jusqu'à présent, tout va bien:
étant donné un hachage stocké comme si:
x => #<Company id: 16, name: "JRapid", markets: {"markets"=>"[{:market_id=>12, :market_name=>\"enterprise software\", :parents=>[{:parent_id=>12, :name=>\"enterprise software\", :grandparents=>{:parent_id=>12, :name=>\"enterprise software\"}}]}, {:market_id=>38, :market_name=>\"cloud computing\", :parents=>[{:parent_id=>38, :name=>\"cloud computing\", :grandparents=>{:parent_id=>38, :name=>\"cloud computing\"}}]}, {:market_id=>409, :market_name=>\"development platforms\", :parents=>[{:parent_id=>409, :name=>\"development platforms\", :grandparents=>{:parent_id=>409, :name=>\"development platforms\"}}]}, {:market_id=>1132, :market_name=>\"developer tools\", :parents=>[{}]}]"}, locations: {"locations"=>"[{:location_id=>1624, :location_name=>\"california\", :parents=>[{}]}, {:location_id=>1703, :location_name=>\"sunnyvale\", :parents=>[{}]}]"}, follower_count: 8, high_concept: "Rapid development Java cloud platform", product_desc: "JRapid is a Platform as a Service and is the fastes...", urls: {"blog_url"=>"http://www.jrapid.com/blog", "logo_url"=>"https://angel.co/images/icons/startup-nopic.png", "thumb_url"=>"https://angel.co/images/icons/startup-nopic.png", "company_url"=>"http://www.jrapid.com", "twitter_url"=>"http://www.twitter.com/JRapid", "angellist_url"=>"https://angel.co/jrapid"}, status: nil, created_at_or_updated_at: {"created_at"=>"2010-07-21T18:48:32Z", "updated_at"=>"2011-05-07T20:00:37Z"}, screenshots: {"screenshots"=>"[[nil]]"}, created_at: "2012-08-07 05:37:54", updated_at: "2012-08-07 05:37:54">
Vous pouvez faire quelque chose comme ceci:
x = x.locations
x = x['locations']
x = eval(x)
x[0][:id]
#=> 1624
AVERTISSEMENT: eval en cours d'exécution() sur une chaîne donnée prendra à peu près tout. Donc, cela pourrait ne pas être une solution de "mode de production". En fait ce n'est pas le cas. Mais cela fonctionnera provisoirement jusqu'à ce que vous appreniez à utiliser une vraie solution de DB de document. ENCORE: AVERTISSEMENT! L'exécution d'eval peut être dangereuse!
(si cela vous a aidé, s'il vous plaît marquer un point --- Je suis interdit de SO pour poser trop de questions et ont besoin plus de points de REP pour pouvoir poser des questions à nouveau)
Pouvez-vous fournir un échantillon de à quoi pourrait ressembler cette structure de hachage? –
Non, mais je pourrais être en mesure de vous donner quelque chose de similaire. Qu'est-ce que vous voulez savoir précisément? – fields