Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在访问关系时避免急于加载_Ruby On Rails_Activerecord_Rails Activerecord - Fatal编程技术网

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)。我刚刚尝试过。它只返回带答案的问题。