如何清理这一点?我想摆脱不必要的代码,像所有的重复a.question == f.question
比较我每个case
语句中使用:如何避免case case内的重复条件
def notifications_lookup(filters, answers)
filters.flat_map do |f|
answers.select do |a|
case a.question.question_type
when "image"
a.question == f.question && a.answer_image.image_id == f.answer.to_i
when "single"
a.question == f.question && a.choice_answer.choice_id == f.answer.to_i
when "list"
a.question == f.question && a.choice_answer.choice_id == f.answer.to_i
when "multiple"
a.question == f.question && !(f.answer.split(",").map(&:to_i) & a.answer_multiple.choices.map(&:id)).empty?
when "rating"
results = verify_condition(f, a)
a.question == f.question && results.any?
else
a.question == f.question
end
end
end
end
def verify_condition(filter, a)
a.answer_raitings.map do |r|
r.raiting == filter.raiting && filter.answer.split(",").map(&:to_i).include?(r.response)
end
end
这种情况通常发生在你没有很好地理解逻辑的时候。 –