Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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 使用Rails和active record在2个外键上左键连接_Ruby On Rails_Postgresql_Rails Activerecord_Eager Loading - Fatal编程技术网

Ruby on rails 使用Rails和active record在2个外键上左键连接

Ruby on rails 使用Rails和active record在2个外键上左键连接,ruby-on-rails,postgresql,rails-activerecord,eager-loading,Ruby On Rails,Postgresql,Rails Activerecord,Eager Loading,我有3个目标: Question - id - question Answer - question_id - user_id - answer User - id 一个答案属于一个用户和一个问题 我想得到每一个问题和他们的答案。 我想要特定用户的答案 我已经尝试了两个查询,但没有人能像预期的那样工作 在这种情况下,如果用户回答了问题。第二个用户查询将返回一个空值 #@questions = Question.includes(:answer).where(answers: { user_

我有3个目标:

Question
- id
- question

Answer
- question_id
- user_id
- answer

User
- id
一个答案属于一个用户和一个问题


我想得到每一个问题和他们的答案。 我想要特定用户的答案

我已经尝试了两个查询,但没有人能像预期的那样工作

在这种情况下,如果用户回答了问题。第二个用户查询将返回一个空值

#@questions = Question.includes(:answer).where(answers: { user_id: [@user.id, nil] })
这一个使用postgres返回预期的数据,但是Rails会对每个问题发出请求以获得答案,但不使用用户id上的条件

#@questions = Question.joins('left join answers on answers.question_id = questions.id and answers.user_id = @user_id')
我想为每个用户生成这种Json

[
{
 id: 1,
 question: 'question',
 answer: { id:22, answer: 'answer' }
},
{
 id: 2,
 question: 'question2',
 answer: { id:23, answer: 'answer' }
},
{
 id: 3,
 question: 'question3',
 answer: null
},
]
欢迎任何帮助


我无法理解这一点

“我希望获得所有问题,如果有,他们的关联答案也会与当前用户关联。”您是否想要所有属于当前用户的问题?整个情况完全没有意义。这就像说我想要所有的苹果都是红色的或不是红色的。如果你想加入答案和问题,你可以用
question.includes(answer::user)
改为编辑问题:)这听起来像是你想使用
左外连接
你读过这篇文章吗?我发布了以下内容:#@questions=Question.joins('leaft join answers on answers.Question_id=questions.id和answers.user_id=@user_id'))