【发布时间】:2019-01-16 11:57:12
【问题描述】:
我有 3 个表格——一个模型 QuizResult、一个模型 QuizAnswers,然后是一个可连接的表格 (quiz_answer_quiz_results):
class QuizResult < ActiveRecord::Base
has_and_belongs_to_many :quiz_answers, :join_table => :quiz_answer_quiz_results
belongs_to :quiz
has_many :quiz_questions, through: :quiz_answers
end
class QuizAnswer < ActiveRecord::Base
belongs_to :quiz_question
has_and_belongs_to_many :quiz_results, :join_table => :quiz_answer_quiz_results
end
我希望能够通过搜索属性 quiz_answer_ids 来找到 QuizResult,但我无法找出关系,即使通过 sql 语法也是如此。
如果我问 QuizResult.first.answer_ids 我会得到 [5,9):
QuizResult.first.quiz_answer_ids
QuizResult Load (2.0ms) SELECT "quiz_results".* FROM "quiz_results" ORDER BY "quiz_results"."id" ASC LIMIT 1
(4.2ms) SELECT "quiz_answers".id FROM "quiz_answers" INNER JOIN "quiz_answer_quiz_results" ON "quiz_answers"."id" = "quiz_answer_quiz_results"."quiz_answer_id" WHERE "quiz_answer_quiz_results"."quiz_result_id" = $1 [["quiz_result_id", 1]]
=> [5, 9]
我要做的是给出 quiz_answer_ids 5,9 我怎样才能取回 QuizResult 对象?我一直在尝试各种奇怪的 QuizResult.joins(:quiz_answers) 或 sql 查询,但无济于事。
【问题讨论】:
-
试试:
QuizResult.includes(:quiz_answers).where(quiz_answers: { id: [5,9] }) -
亲爱的主,我知道我疯了。非常感谢 - 比我尝试的要简单得多!
-
我已将其发布为答案。希望它会在未来对其他人有所帮助。 :)
标签: ruby-on-rails has-and-belongs-to-many jointable