从数据库存储和检索OpenStruct?

时间:2012-03-31 16:16:37

标签: ruby ruby-on-rails-3 activerecord

我目前正在尝试找到从Rails 3中的数据库中存储和检索一些嵌套数据的最佳方法。我调用API并返回并以OpenStruct格式输出。一些数据是一级深度的,我正在解析它并仅在数据库中存储该值。没有问题。然而,一些被退回的物品有100个子物品,我真的不想弄乱我的桌子。所以我到目前为止所做的只是将第二级或更深层次的内容直接保存到数据库中。

为了举个例子,让我们说我正在收集一辆我存放到我的汽车数据库的汽车的信息。所以基本上make和model都被保存了一个字符串,但是让我们说一个规格的字段,其中所有的汽车规格都嵌套在OpenStruct中。所以,而不是去spec1 = car.specs.spec1,spec 2 = car.specs.spec2 ... specs100 = car.specs.spec100等我做specs = car.specs并将其保存到数据库。 (非常宽松的例子只是为了给出一个大致的想法。)

我的问题是检索该数据。遍历数据似乎不再有用了。

如果我尝试输出一些嵌套信息,我会得到"未定义的方法"。

如果我输出整个字段,我得到类似的东西:" Car Spec1:---!ruby / object:OpenStruct table :: spec2:Something Here:spec3:Something Here:spec4:Something Here:spec5: !ruby / object:OpenStruct表:...等等"

我对Rails和OpenStruct格式都很陌生,所以我非常感谢您尝试检索数据时的任何帮助。或者也许是首先保存数据的更好方法。我错过了什么?

分贝/ schema.rb:

ActiveRecord::Schema.define(:version => 20120401042641) do

  create_table "characters", :force => true do |t|
    t.integer  "user_id"
    t.string   "realm"
    t.string   "name"
    t.integer  "level"
    t.integer  "race"
    t.integer  "class_id"
    t.integer  "gender"
    t.text     "guild"
    t.text     "talents"
    t.text     "items"
  end

  add_index "characters", ["user_id"], :name => "index_characters_on_user_id"

end

1 个答案:

答案 0 :(得分:3)

在bradgonesurfing的第一个评论之后,我决定尝试使用OpenStruct进行序列化。就像大部分时间的哈希一样。

serialize :field(在我的模型中)

然后您可以通过调用field.something.something等来检索数据。