Сложный SQL в Rails - PullRequest
       1

Сложный SQL в Rails

2 голосов
/ 15 марта 2011

Как мне сформировать следующий запрос, используя активную запись?

SELECT c.* 
FROM `course_enrollments` ce JOIN courses c ON ce.course_id = c.id 
WHERE ce.created_at
BETWEEN '2000-01-01' and '2012-01-01' [AND ANOTHER POSSIBLE CONDITION]
GROUP BY c.id

Я хочу иметь возможность сделать что-то вроде: (Я знаю, что ниже не правильно, но я просто хочу показать общийпример)

courses = Course.joins(:course_enrollments).where('course_enrollments.created_at' => params[:start_date]..params[:end_date]).group('courses.id')

if some_condition
  courses = courses.where(:some_field => 1)
end

Ответы [ 2 ]

2 голосов
/ 15 марта 2011

Следующее должно помочь вам

Course.joins(:course_enrolements).
where("course_enrolements.created_at between '2000-01-01' and '2012-01-01'").
group("courses.id").
where(MORE CONDITIONS)

используйте .to_sql для анализа вывода

0 голосов
/ 18 сентября 2011

Взгляните на это Railscast . Есть довольно много способов сделать то же самое элегантно, особенно. чтобы решить вашу [И ДРУГОЕ ВОЗМОЖНОЕ СОСТОЯНИЕ] озабоченность. Также взгляните на камень Squeel , если он не предлагается в Railscast.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...