如何清理這一點?我想擺脫不必要的代碼,像所有的重複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
這種情況通常發生在你沒有很好地理解邏輯的時候。 –