18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'app/models/product/survey/result.rb', line 18
def update_chosen_count_of_options
if task.answer_type == 'Checkboxes'
option_ids = JSON.parse(text)
option_ids_was_array = JSON.parse(text_was)
options = task.options.where(_id: { '$in' => (option_ids + option_ids_was_array).uniq }).index_by{|o| o.id.to_s}
option_ids_was_array.select{|id| !option_ids.include?(id) }.each do |option_id_was|
option = options[option_id_was]
option.update_attribute(:chosen_count, option.chosen_count.to_i - 1)
end
option_ids.select{|id| !option_ids_was_array.include?(id) }.each do |option_id|
option = options[option_id]
option.update_attribute(:chosen_count, option.chosen_count.to_i + 1)
end
else
option = task.options.where(_id: text).first
option.update_attribute(:chosen_count, option.chosen_count.to_i + 1)
option = task.options.where(_id: text_was).first
option.update_attribute(:chosen_count, option.chosen_count.to_i - 1)
end
end
|