「質問と回答」フォーラム用の Rails 4 アプリを作成しています。私はモデルのマイクロポストを持っています。さまざまなマイクロポストを質問と回答として接続するモデル QuestionAnswer があります。
Class Micropost < ActiveRecord::Base
has_many question_answers, foreign_key: "question_id"
has_many answers, through: :question_answers
has_one :reverse_question_answer, foreign_key: "answer_id", class_name: "QuestionAnswer"
has_one :question, through: :reverse_question_answer
end
Class QuestionAnswer < ActiveRecord::Base
belongs_to :question, class_name: "Micropost"
belongs_to :answer, class_name: "Micropost"
end
次に、データベース クエリを実行します。2 つの LEFT OUTER JOIN を使用して、すべての質問と回答を含むジョイント テーブルを作成したいと考えています。
Micropost.
joins('LEFT OUTER JOIN question_answers ON question_answers.question_id = microposts.id').
joins('LEFT OUTER JOIN microposts ON microposts.id = question_answers.answer_id')
エラーメッセージが表示される
SQLite3::SQLException: ambiguous column name: microposts.id SELECT "microposts".* FROM "microposts" LEFT OUTER JOIN question_answers ON question_answers.question_id = microposts.id LEFT OUTER JOIN microposts ON microposts.id = question_answers.answer_id ORDER BY created_at DESC
上記の 2 番目の joins コマンドでマイクロポストを回答に置き換えましたが、そのようなテーブルがないと不平を言っています。2つの結合を行うにはどうすればよいですか? -ありがとう。