В настоящее время я пытаюсь найти лучший способ для хранения и извлечения некоторых вложенных данных из базы данных в Rails 3. Я обращаюсь к API, и он возвращает данные и выводит их в формате OpenStruct. Некоторые данные находятся на одном уровне, и я анализирую их и сохраняю только значение в базе данных. Там нет проблем. Тем не менее, некоторые из возвращаемых предметов имеют сотни подпунктов, и я действительно не хочу вносить беспорядок в мои столы. Так что я до сих пор просто сохраняю все данные второго уровня или глубже непосредственно в базе данных.
Просто для примера, скажем, я получаю информацию об автомобиле, который храню в базе данных автомобилей. Таким образом, в основном make и model сохраняются в виде строк, но, скажем, поле для спецификаций, в котором все спецификации автомобилей вложены в него в OpenStruct. Поэтому вместо того, чтобы идти spec1 = car.specs.spec1, spec 2 = car.specs.spec2 ... specs100 = car.specs.spec100 и т. Д. Я делаю specs = car.specs и сохраняю это в базу данных. (Очень свободный пример, чтобы дать общее представление.)
Моя проблема заключается в получении этих данных. Обход данных больше не работает.
Если я пытаюсь вывести часть вложенной информации, я получаю «неопределенный метод».
Если я вывожу все поле, я получаю что-то вроде: "Спецификация автомобиля1: ---! Ruby / object: таблица OpenStruct:: spec2: Что-то здесь: spec3: Что-то здесь: spec4: Что-то здесь: spec5:! Ruby / объект: таблица 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