Мое приложение имеет Question
модели, которые has_many
UserResponse
модели.Rails 3: Как запросить загрузку ассоциации И применить условие с include()?
Я бы хотел (а) получить последние 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 из веб-службы для моего мобильного приложения, поэтому мне нужен весь график ,
Почему вы пытаетесь присоединиться к группе? – rwilliams