2012-01-11 8 views
3

APIを使用して、以下のJSONレスポンスをサーバーのリストとともに取得しています。アクティブなレコードに入れ子にされたJSON

これはJSONデータをネストしているため、モデルを作成してこのデータを保存する最良の方法は何ですか?

私がこのデータを使ってやりたいことは、今のところそれを保存することです。 ipaddressesまたはlb_applicationsがフラット化されても、1つ以上のリストは表示されません。

{"ips"=>[{"address"=>"127.9.34.6"}], 
    "memory"=>8589934592, 
    "id"=>"79ahvoahvo9h8apdjaidfjeijowfj", 
    "storage"=>107374182400, 
    "location_id"=>"hdfajhlnf4jaf23wf3f33fwoifjsijfsij", 
    "hostname"=>"my.server.name.com", 
    "description"=>"8 GB RAM + 100 GB Disk", 
    "cpu"=>4.0, 
    "status"=>"running", 
    "lb_applications"=> 
    [{"lb_application_name"=>"Staging", 
    "lb_application_id"=>"2ohuro2lufp92epf9dpe0ijpdijfps9udhfp9"}]}, 
{"ips"=>[{"address"=>"127.99.6.75"}], 
    "memory"=>4294967296, 
    "id"=>"ufho923ehufp9idf0i3jef0ijd32ddd2", 
    "storage"=>53687091200, 
    "location_id"=>"93fj8j93jf9hj39fh93h9g3hrg9", 
    "hostname"=>"my.server2.name.com", 
    "description"=>"", 
    "cpu"=>2.0, 
    "status"=>"running", 
    "lb_applications"=>[]}, 
+0

ActiveResourceはあなたの友達 – apneadiving

+0

右です私のモデルをこのjsonで渡すための最良の方法は何ですか?このページには良い情報があるようですが、複数のレコードを必要としません。 http://www.rogue-development.com/blog2/2009/05/creating-nested-objects-with-json-in-rails/ – pablo

答えて

3

いつでもハッシュをシリアル化して、クエリに必要なデータの余分な列を格納することができます。

移行では、テキストのようにフィールドを追加します。あなたが持っている必要があり、モデルの上部に

add_column :my_models, :my_hash, :text, :limit => 16000000 #only add the limit bit if the hash is exceptionally long 
add_column :my_models, :other_data, :string 

class MyModel < ActiveRecord::Base 
    serialize :my_hash, Hash 

、その後、あなたのモデルを作成するときにしなければならないすべてはこれです:

hash = {:rawr => "Lion"} 
MyModel.create(:my_hash=>hash, :other_data=>hash[:rawr]) 
関連する問題