Я пишу потребителю службы rails web-hooks, который получает объемные объекты во вложенном XML и должен сохранять определенные поля в каждом узле. Когда данные XML попадают в мое действие create в моем HooksController, XML автоматически преобразуется в хеш, который выглядит следующим образом.
Parameters: {"Events"=>{"RecordSet"=>{"Record"=>[{"SENDER_LAST_NAME"=>"Smith",
"SENDER_MIDDLE_NAME"=>"S.", "EVENT_ID"=>"3904", "SENDER_FIRST_NAME"=>"John",
"EVENT_TYPE"=>"Contact", "SENDER_MSISDN"=>"0723xxxxxx", "EVENT_DATE"=>"2011-05-31"},
{"SENDER_LAST_NAME"=>"Simiyu", "SENDER_MIDDLE_NAME"=>"N.",
"EVENT_ID"=>"2447", "SENDER_FIRST_NAME"=>"Steve", "EVENT_TYPE"=>"Tag",
"SENDER_MSISDN"=>"0720xxxxxxx", "EVENT_DATE"=>"2011-05-31"}]}, "xmlns"=>""}}
Я не хочу хранить все поля каждого объекта, поскольку моя модель ExternalEvents, которая соответствует событиям в хэше, не имеет всех полей в хэше. Также я хочу сопоставить поле SENDER_MSISDN зарегистрированным пользователям MSISDN перед сохранением. Обычно я использую Nokogiri для анализа XML и последующего создания объектов Model в цикле, но я не могу этого сделать, поскольку rails автоматически преобразует его в хеш. У меня нет никакого способа изменить структуру входящего XML. Я попытался найти ключ к решению этой проблемы безуспешно.
Я на грани срывания волос на этом.