добавление к хэшу во время цикла - PullRequest
0 голосов
/ 02 ноября 2009

Я сделаю это быстро. Я использую Ruby / LDAP для поиска по моим критериям base_dn. Я получаю результат обратно (типа Entry). Я могу преобразовать объект типа Entry в Hash с помощью метода to_hash. Проблема в том, что когда возвращается результат, это несколько объектов типа Entry. Я хочу преобразовать их в хеш, добавить их во время цикла. Посмотрите на это:

connection.search(base_dn,scope,filter) do |entry|
        #pp entry.to_hash
        searchResult.merge!(entry.to_hash)
end

Вы знаете, если я делаю цикл и хочу добавить объекты в массив, я могу использовать <<, и он будет добавляться по мере прохождения. Я прочитал RDOC, метод слияния или обновления хэша должен делать то же самое, но безрезультатно. Может ли кто-нибудь дать мне подсказку о том, как я могу преобразовать объекты Entry в хеш и добавить их. </p>

Приведенный выше код дает мне последнюю запись в поиске. По сути, он каждый раз перезаписывает хеш searchResult, а не объединяется с существующим хешем. Заранее спасибо.

1 Ответ

2 голосов
/ 02 ноября 2009

При использовании Hash # merge! вам нужно будет предоставить дополнительный хеш, который правильно указан, иначе он просто объединит все ваши результаты.

Бьюсь об заклад, то, что вам действительно нужно, это что-то вроде:

connection.search(base_dn,scope,filter) do |entry|
  searchResult[entry.id] = entry.to_hash
end

Здесь entry.id представляет уникальный идентификатор, который можно использовать для разделения записей записей.

Поскольку Hash - это хранилище ключей / значений, вы не можете «добавить» его, как массив, который по сути является списком объектов.

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