У меня плохая интерпретация моего кода, или я не понимаю, как пусть это сработает.Неверная интерпретация моего кода Ruby моего кода
В принципе у меня есть этот запрос:
def create_request
return {} unless [email protected]?
req = {
ProfileIDVersion: {
ID: ENV['GBGROUP_PROFILE_ID'],
Version: ENV['GBGROUP_PROFILE_VERSION']
},
CustomerReference: reference,
InputData: {
Personal: {
PersonalDetails: {
Title: @person.title,
Forename: @person.first_name,
MiddleName: @person.middle_name,
Surname: @person.last_name,
Gender: @person.gender,
DOBDay: @person.dob.nil? ? '' : @person.dob.day,
DOBMonth: @person.dob.nil? ? '' : @person.dob.month,
DOBYear: @person.dob.nil? ? '' : @person.dob.year
}
},
Addresses: []
}
}
address_count = 0
@person.addresses.each do |address|
Rails.logger.debug 'Adding address'
if address_count == 0
Rails.logger.debug 'Adding current address'
req[:InputData][:Addresses] << {
CurrentAddress: {
Country: address.country,
ZipPostcode: address.postcode,
AddressLine1: address.line1,
AddressLine2: address.line2,
AddressLine3: address.town_city,
FirstYearOfResidence: address.from_year,
LastYearOfResidence: address.to_year
}
}
else
Rails.logger.debug 'Adding previous address'
req[:InputData][:Addresses] << {
"PreviousAddress#{address_count}" => {
Country: address.country,
ZipPostcode: address.postcode,
AddressLine1: address.line1,
AddressLine2: address.line2,
AddressLine3: address.town_city,
FirstYearOfResidence: address.from_year,
LastYearOfResidence: address.to_year
}
}
end
address_count += 1
end
end
, где я ожидал, чтобы иметь на выходе:
<ns:Addresses>
<ns:CurrentAddress>
<ns:Country>United Kingdom</ns:Country>
<ns:ZipPostcode>SP9 7EW</ns:ZipPostcode>
<ns:AddressLine1>3 Bayeux Mews</ns:AddressLine1>
<ns:AddressLine2>St Georges Road</ns:AddressLine2>
<ns:AddressLine3>Tidworth</ns:AddressLine3>
<ns:FirstYearOfResidence>2015</ns:FirstYearOfResidence>
<ns:LastYearOfResidence>2015</ns:LastYearOfResidence>
</ns:CurrentAddress>
<ns:PreviousAddress1>
<ns:Country>United Kingdom</ns:Country>
<ns:ZipPostcode>SP9 7EW</ns:ZipPostcode>
<ns:AddressLine1>3 Bayeux Mews</ns:AddressLine1>
<ns:AddressLine2>St Georges Road</ns:AddressLine2>
<ns:AddressLine3>Tidworth</ns:AddressLine3>
<ns:FirstYearOfResidence>2012</ns:FirstYearOfResidence>
<ns:LastYearOfResidence>2015</ns:LastYearOfResidence>
</ns:PreviousAddress1>
</ns:Addresses>
вместо я получил, что:
<ns:Addresses>
<ns:CurrentAddress>
<ns:Country>United Kingdom</ns:Country>
<ns:ZipPostcode>SP9 7EW</ns:ZipPostcode>
<ns:AddressLine1>3 Bayeux Mews</ns:AddressLine1>
<ns:AddressLine2>St Georges Road</ns:AddressLine2>
<ns:AddressLine3>Tidworth</ns:AddressLine3>
<ns:FirstYearOfResidence>2015</ns:FirstYearOfResidence>
<ns:LastYearOfResidence>2015</ns:LastYearOfResidence>
</ns:CurrentAddress>
</ns:Addresses>
<ns:Addresses>
<ns:PreviousAddress1>
<ns:Country>United Kingdom</ns:Country>
<ns:ZipPostcode>SP9 7EW</ns:ZipPostcode>
<ns:AddressLine1>3 Bayeux Mews</ns:AddressLine1>
<ns:AddressLine2>St Georges Road</ns:AddressLine2>
<ns:AddressLine3>Tidworth</ns:AddressLine3>
<ns:FirstYearOfResidence>2012</ns:FirstYearOfResidence>
<ns:LastYearOfResidence>2015</ns:LastYearOfResidence>
</ns:PreviousAddress1>
</ns:Addresses>
Как вы можете видеть, у меня есть два адреса блока, один с текущим адресом и другой с предыдущего адреса, но нужно только один адрес блок.
догадки, что проблема может быть вызов несколько раз:
req[:InputData][:Addresses] <<
, но я на самом деле не знаю, как ее решить, чтобы иметь все адреса в одном блоке.
Это то, что я получил от моего Spec теста:
"Addresses": [
{
"CurrentAddress": {
"Country": "United Kingdom",
"ZipPostcode": "OX4 2QX",
"AddressLine1": "36 Brasenose Driftway",
"AddressLine2": "Oxford",
"AddressLine3": null,
"FirstYearOfResidence": 2002,
"LastYearOfResidence": 2014
}
},
{
"PreviousAddress1": {
"Country": "United Kingdom",
"ZipPostcode": "AB1 1AA",
"AddressLine1": "21 A Street",
"AddressLine2": "Aberdeen",
"AddressLine3": null,
"FirstYearOfResidence": 1998,
"LastYearOfResidence": 2002
}
}
]
Благодаря любому проведет минуту ответить, Caterpillar.
, как вы добавили пробегу фрагмент кода, –
я просто нажал} символ { в то время как я писал вопрос! –