クイズアプリで未回答問題を選択して表示
Ruby on Rails 5を使い、クイズアプリを作成しています。
Modelとして、userモデルとquestionモデル、そしてそれらの中間テーブルであるachievementモデルを持っています。
resultモデルには、user_idと既に実施したquestion_idとその結果(正誤)が格納されています。
実施したいとこととしては、中間テーブルachievementからログインユーザのuser_idとquestion_idを参照し、questionモデルからこれに該当するものを除くことによって未回答の問題を抽出したいと考えています。
しかしながら、良い方法が考えつきません。
どうか、未回答の問題の抽出方法をご教授ください
発生している問題・エラーメッセージ
エラーメッセージ ActiveRecord::StatementInvalid in Achievements#search Mysql2::Error: Unknown column 'achievements.user_id' in 'where clause': SELECT `questions`.* FROM `questions` WHERE (`questions`.`id` NOT IN (SELECT `questions`.`id` FROM `questions` WHERE `achievements`.`user_id` = 12))
該当のソースコード
@t = Question.includes(:achievements).where(achievements: {user_id: current_user.id})
このコードによって、achievementモデルからユーザが解答済みの問題のquestion_idを取得することはできました。しかしながら、上記のようなエラーにより未回答の問題を抽出できませんでした。
試したこと
@questions = Question.all.where.not(id: @t)
とすることによって、ログインユーザが未回答の問題を抽出することができると考えたのですが、エラーが発生
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/24 01:15