【问题标题】:Nested JSON in to active record将 JSON 嵌套到活动记录中
【发布时间】:2012-01-11 00:16:15
【问题描述】:

通过 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"=>[]},

【问题讨论】:

  • ActiveResource 是你的朋友
  • 对,但是设置我的模型以传递此 json 的最佳方法是什么?这个页面似乎有一些很好的信息,但我不想要多条记录。 rogue-development.com/blog2/2009/05/…

标签: ruby-on-rails json activerecord model


【解决方案1】:

您始终可以序列化哈希,然后存储您可能需要查询的数据中的任何额外列。

在您的迁移中,您将像添加文本一样添加字段。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    相关资源
    最近更新 更多