def SmerfFormsUser.update_records(smerf_form_id, user_id, responses)
transaction do
smerf_forms_user = SmerfFormsUser.find_user_smerf_form(
user_id, smerf_form_id)
if (smerf_forms_user)
smerf_forms_user.update_attribute(:responses, responses)
current_responses = SmerfResponse.find(:all,
:conditions => ["smerf_forms_user_id = ?", smerf_forms_user.id])
new_responses = Array.new()
responses.each do |question_response|
if (question_response[1].kind_of?(Hash) or
question_response[1].kind_of?(Array))
question_response[1].each do |multichoice_response|
if (multichoice_response.kind_of?(Hash) or
multichoice_response.kind_of?(Array))
response = multichoice_response[1]
else
response = multichoice_response
end
if (!response.blank?())
if (found = self.response_exist?(current_responses,
question_response[0], response))
new_responses << found
else
new_responses << (SmerfResponse.new(
:smerf_forms_user_id => smerf_forms_user.id,
:question_code => question_response[0],
:response => response))
end
end
end
else
if (!question_response[1].blank?())
if (found = self.response_exist?(current_responses,
question_response[0], question_response[1]))
new_responses << found
else
new_responses << (SmerfResponse.new(
:smerf_forms_user_id => smerf_forms_user.id,
:question_code => question_response[0],
:response => question_response[1]))
end
end
end
end
smerf_forms_user.smerf_responses.replace(new_responses)
end
end
end