나는 '질문 및 답변'포럼을위한 레일 4 응용 프로그램을 만들고 있습니다. 모델 Micropost가 있습니다. 질문과 대답으로 다른 마이크로 포스트를 연결하는 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
이제 데이터베이스 쿼리를 수행하고 싶습니다. 나는 두 번째에 답변 micropost 교체 위의 명령을 조인
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
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')
내가 오류 메시지가 나타납니다 : 나는 LEFT OUTER 모든 질문에 대한 답변과 공동 테이블을 만드는 조인이 사용하고자하는 그런 테이블이 없다고 불평한다. 어떻게 두 개의 조인을 할 수 있습니까? -감사.
당신은 가입 한 고수하지만,이 FULL OUTER 가입하지할까요? like :'FULL OUTER JOIN question_answers ON question_answers.question_id = microposts.id' –
답장을 보내 주셔서 감사합니다. 나는 전체 외부 조인을 할 수없는 SQLite3을 사용하고 있습니다. 또한 microposts (질문)에서 question_answers (답변으로) microposts로 이동하려는 때문에 두 조인이 필요합니다. – user2725109
나는 다음과 같은 것을 시도해 볼 수 있겠는가? 'Micropost. 조인 ('LEFT OUTER JOIN question_answers a a.question_id = microposts.id'). 조인 ('LEFT OUTER JOIN 마이크로 포스트 m ON m.id = a.answer_id') ' –