отображение на значение в глубоком хеше - PullRequest
2 голосов
/ 16 октября 2010

Я делаю приложение, используя mongodb и mongoid, и сталкиваюсь с проблемой, когда мне нужно сопоставить что-то в одном документе с чем-то в другом документе. Мой план состоит в том, чтобы сохранить что-то в документе, который я затем смогу использовать, чтобы выяснить, какое значение для него нужно извлечь из другой коллекции. Но, в общем, это рубиновый вопрос о том, как я могу получать данные из глубины хэша.

У меня есть что-то вроде структуры:

Widget
  Sections
    0
      Fields
        0
          value: foobar

Если это имеет смысл. Допустим, я хочу получить значение первого поля в первом разделе, я бы сделал что-то вроде:

@widget.sections[0].fields[0].value

Нет проблем.

Теперь вопрос, как я могу сделать это со всем этим как строку? То, что я хочу сделать, это сохранить в базе данных значение сопоставления. Итак, у меня есть ключ / значение с чем-то вроде:

mapping: "sections[0].fields[0].value"

Теперь, как я могу использовать это для получения данных из @widget? Я попытался @ widget.send "section [0] .fields [0] .value", но это не работает ... Я могу сделать @ widget.send "section" и получить массив разделов, но я ' Я не совсем уверен, как это сделать дальше ...

Итак, подведя итог, я могу сделать это:

@widget.sections[0].fields[0].value

если у меня есть @widget и строка «section [0] .fields [0] .value», как я могу это выполнить?

1 Ответ

1 голос
/ 16 октября 2010
@widget.instance_eval("sections[0].fields[0].value")

должен сделать трюк.

...