Ruby on rails 在访问关系时避免急于加载
我的问题是我使用此查询:Ruby on rails 在访问关系时避免急于加载,ruby-on-rails,activerecord,rails-activerecord,Ruby On Rails,Activerecord,Rails Activerecord,我的问题是我使用此查询: @questions = Question.includes(:answer).joins('LEFT OUTER JOIN answers ON answers.question_id = questions.id AND answers.user_id= 1').select('answers.*, questions.*') 然后生成这两个mysql查询。问题是第二个查询为每个用户获取答案 1.Question Load (2.7ms) SELECT ans
@questions = Question.includes(:answer).joins('LEFT OUTER JOIN answers ON answers.question_id = questions.id AND answers.user_id= 1').select('answers.*, questions.*')
然后生成这两个mysql查询。问题是第二个查询为每个用户获取答案
1.Question Load (2.7ms) SELECT answers.*, questions.* FROM "questions" LEFT OUTER JOIN answers ON answers.question_id = questions.id AND answers.user_id= 1
2.Answer Load (0.8ms) SELECT "answers".* FROM "answers" WHERE "answers"."question_id" IN (2, 3, 4, 5, 6, 7, 8, 1)
第二个查询不是为每个用户获取答案。它为所有问题获取它们(查看查询中的条件)。如果您想避免它,那么只需删除
包含
或尝试添加所述条件。是,但a已经在第一次查询中获取了答案。但是你知道怎么做吗?我从两天以来就一直坚持下去。。。我希望所有问题都有特定用户的答案。我希望在第二个查询中添加where子句。因为如果我将其添加到第一个问题上,将不会选择没有答案的问题。您实际上想做什么?获取每个问题及其关系“答案”,但我只希望特定用户提供答案。@questions=@user.answers.includes(:questions)。collect(&:questions)。我刚刚尝试过。它只返回带答案的问题。