У меня есть эта линия в моем коде:Почему этот запрос ActiveRecord имеет разный вывод SQL в Rails 3 vs Rails 2?
@total = FeedbackAnswer.count(:conditions => feedback_answers_conditions,
:joins => [:question, :feedback, {:feedback => :course}],
:group => 'question_id, courses.id').size
При вызове этой линии в Rails 2.3.2 на Руби 1.8.7 запрос, который я получаю это:
SELECT count(*) AS count_all, question_id AS question_id, courses.id AS courses_id
FROM `feedback_answers` INNER JOIN `questions`
ON `questions`.id = `feedback_answers`.question_id
INNER JOIN `feedbacks`
ON `feedbacks`.id = `feedback_answers`.feedback_id
** INNER JOIN `feedbacks` feedbacks_feedback_answers
ON `feedbacks_feedback_answers`.id = `feedback_answers`.feedback_id **
INNER JOIN `courses`
ON `courses`.id = `feedbacks_feedback_answers`.container_id
WHERE (1=1 and feedbacks.container_type = "Course"
and (Date(courses.start_date) >= '2013-05-27')
and (feedback_answers.lesson_id is null)
and (feedback_answers.answer_grade > 0))
GROUP BY question_id, courses.id
Но при вызове его из Рельсы 3.2.8 на Ruby 1.9.3 Я получаю:
SELECT COUNT(*) AS count_all, question_id, courses.id AS question_id_courses_id
FROM `feedback_answers` INNER JOIN `questions`
ON `questions`.`id` = `feedback_answers`.`question_id`
INNER JOIN `feedbacks`
ON `feedbacks`.`id` = `feedback_answers`.`feedback_id`
INNER JOIN `courses`
ON `courses`.`id` = `feedbacks`.`container_id`
WHERE (1=1 and feedbacks.container_type = "Course"
and (Date(courses.start_date) >= '2013-05-27')
and (feedback_answers.lesson_id is null)
and (feedback_answers.answer_grade > 0))
GROUP BY question_id, courses.id
Разница обозначена знаком **.
Откуда это различие? Но самое главное, как мне получить поведение 1.8.7 в моем коде 1.9.3?
Такая же версия рельсов? Странно, но вы видите другой результат? – agmcleod
Извините, нет. 1.8.7 находится на рейлах 2.3.2, 1.9.3 на 3.2.8 –
Не могли бы вы ожидать, что, возможно, две очень разные версии Rails могут взаимодействовать с базой данных несколько иначе? Почему, на ваш взгляд, версия Ruby влияет на это? –