ネストされたXMLでバルクオブジェクトを受け取り、各ノードに特定のフィールドを保存する必要があるRailsWebフックサービスコンシューマーを作成しています。XMLデータが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の構造を変更する方法がありません。これをうまく処理する方法の手がかりを探してみました。
私はこれで髪をはぎ取る寸前です。