Сохранение вложенного хэша в Ruby on Rails - PullRequest
0 голосов
/ 29 февраля 2012

Я пытаюсь сохранить вложенный хэш в своей базе данных и извлечь его, но вложенные значения теряются при извлечении.

Моя модель выглядит так:

class User
  serialize :metadata, MetaData
end

Класс MetaData выглядит следующим образом:

class MetaData < Hash
  attr_accessor :availability, :validated
end

Код, который я использую для хранения данных, выглядит примерно так (хотя реальные данные поступают из формы HTML):

user = User.find(id)
user.metadata.validated = true
user.metadata.availability = {'Sunday' => 'Yes', 'Monday' => 'No', 'Tuesday' => 'Yes'}
user.save

Когда я смотрю на данные в базе данных, я вижу следующее:

--- !map:MetaData 
availability: !map:ActiveSupport::HashWithIndifferentAccess 
  Sunday: "Yes"
  Monday: "No"
  Tuesday: "Yes"
validated: true

Проблема возникает, когда я снова пытаюсь получить объект:

user = User.find(id)
user.metadata.validated # <- this is true
user.metadata.availability # <- this is nil

Есть идеи? Я использую Rails 3.1 с Postgresql в качестве хранилища данных.

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Если вы заглянете в базу данных, вы увидите «map:ActiveSupport::HashWithIndifferentAccess» на предмет доступности?

Мой подход заключается в том, чтобы отделить один экземпляр доступности от структуры сбора хеш-значений доступных дней.

0 голосов
/ 29 февраля 2012

Вы имеете в виду user.metadata.validated # <- это правда? </p>

В каких столбцах БД хранятся метаданные и доступность? Они должны быть ТЕКСТ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...