Мое приложение имеет Question
моделей, которые has_many
UserResponse
моделей.
Я бы хотел получить последние 5 вопросов, на которые конкретный User
ответил с соответствующими UserResponse
объектами, отфильтрованными в поле user_id
.
Вот что у меня сейчас есть:
Question.group("questions.id").
joins("inner join user_responses r on r.question_id = questions.id").
where("r.user_id = #{user_id}").
order("questions.id asc").limit(5)
Этот запрос возвращает мне то, что я хочу, но проблема в том, что я получаю Question
из массива и выполняю question.user_responses
, в результате получаются все ответы на этот вопрос,не только те, которые должны быть отфильтрованы в приведенном выше предложении join / where.
Я пытался сделать это:
Question.includes(:user_responses).group("questions.id").
joins("inner join user_responses r on r.question_id = questions.id").
where("r.user_id = #{user_id}").
order("questions.id asc").limit(5)
, думая, что это будет загружать каждый ответ ... ноПохоже, он не работает таким образом.
Где я иду не так?
Если это имеет значение, причина, по которой мне нужно все, что загружено с нетерпением, заключается в том, что я хочу взять массив ипозвоните на него to_json и верните json из веб-службы для моего мобильного приложения, поэтому мне нужен весь график.