【问题标题】:RoR lookup HABTM join by multiple idsRoR 查找 HABTM 通过多个 id 加入
【发布时间】: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


【解决方案1】:

试试:

QuizResult.includes(:quiz_answers).where(quiz_answers: { id: [5,9] }) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2017-04-25
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    相关资源
    最近更新 更多