2012-02-25 7 views
0

У меня есть (рабочий) кодГруппы по запросу в Rails 3

counts = Registration.select('regulator_id').group('regulator_id').count 
@regulators.each {|r| r.registration_count=counts[r.id]} 

, который позволяет мне показать, сколько регистраций есть за регулятор. Запрос он генерирует является:

SELECT COUNT("registrations"."regulator_id") AS count_regulator_id, regulator_id AS regulator_id FROM "registrations" GROUP BY regulator_id 

Я хотел бы ограничить свое количество до тех регистраций от только последний передряг, с запросом, как:

select 
    regulator_id, count(*) 
from 
    registrations inner join 
    regulators on regulators.id = registrations.regulator_id 
where 
    registrations.updated_at > regulators.last_scrape_start 
group by 
    regulator_id 

, но я не могу получить синтаксис для работы либо используя isl или find_by_sql. Я уверен, что это просто, когда вы знаете ответ, но это стоило мне возрастов.

Заранее спасибо.

ответ

1

Просто добавьте 'присоединяется' и 'где'

Registration.joins(:regulator).where('registrations.updated_at > regulators.last_scrape_start').select('regulators.id').group('regulators.id').count 
+0

Спасибо. Я даже не могу вспомнить, какую идиотскую ошибку я делал, но я должен был попробовать несколько вещей, очень близких этому. – baldmark

Смежные вопросы