2014-11-21 61 views
0

我收到了一個學生尚未正確回答的所有問題。尚未得到解答的測驗問題的Rails/ActiveRecord查詢

correct_questions = QuizQuestionResponse.where(correct: true, user_id: current_user.id, lesson_id: params[:quiz_response][:lesson_id]) 
questions = QuizQuestion.where('lesson_id = ? AND id not in (?)', params[:quiz_response][:lesson_id], correct_questions) 

有沒有一種方法可以用更優雅高效的方式來編寫它?

+0

我很困惑,爲什麼'''QuizQuestionResponse'' ID屬性是針對'''QuizQuestion'''的ID進行比較? – KPheasey 2014-11-21 21:06:48

+0

糟糕。這是我沒有發現的錯誤,謝謝! – 2014-11-21 22:09:42

回答

0

我假設原始查詢不正確,因爲您使用QuizQuestionResponse ID作爲QuizQuestion ID的參數。

correct_question_ids = QuizQuestionResponse.where(correct: true, user_id: current_user.id, lesson_id: params[:quiz_response][:lesson_id]).pluck(:question_id) 
questions = QuizQuestion.where(lesson_id: params[:quiz_response][:lesson_id]).where.not(id: correct_question_ids) 

not方法是爲Rails 4+