通过API,我将获得下面的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 :(得分: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])