使用Rails和活动记录左连接2个外键

时间:2015-05-05 10:22:32

标签: 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_id: [@user.id, nil] })

这个用postgres返回预期的数据,但是Rails正在请求每个问题得到答案,但没有在user_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
},
]

非常欢迎任何帮助。

我无法弄明白

0 个答案:

没有答案