2012-01-11 82 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 2012-01-11 00:18:27

+0

权,但是建立我的模型以传递此json的最佳方式是什么?此页面似乎有一些很好的信息,但我不想多个记录。 http://www.rogue-development.com/blog2/2009/05/creating-nested-objects-with-json-in-rails/ – pablo 2012-01-11 00:25:30

回答

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])