как ссылку Саурабх дал, вы в конечном итоге поместить ваши sql-фрагменты в методы запросов rails; что-то вроде этого
list = SubmissionState.select("submission_id, state_id")
.where(:state_id => 0)
.joins("
JOIN (
SELECT MAX(created_at) as created_at
FROM submissionstates ss
GROUP BY submission_id
) x
ON ss.created_at = x.created_at
")
puts list.length
быть честным в этот момент вы могли бы быть лучше только с помощью find_by_sql
sql = "
SELECT submission_id, state_id
FROM submissionstates ss
JOIN (
SELECT MAX(created_at) as created_at
FROM submissionstates ss
GROUP BY submission_id
) x
ON ss.created_at = x.created_at
WHERE state_id = ?
AND some_other_value = ?
"
list = SubmissionState.find_by_sql([sql, 0, 'something-else'])
puts list.length
Примечание: как только вы начинаете использовать присоединяется или find_by_sql рельсы действует как это дает вам объекты обратно, но на самом деле они будут содержать любые атрибуты, определенные в предложении select, и find_by_sql возвращает все атрибуты в виде строк, которые могут раздражать
Документация RoR по запросам должна помочь вам http://guides.rubyonrails.org/active_record_querying.html –
См. - http://stackoverflow.com/questions/7016422/how-to-convert-sql-query-to-rails-active-record-query –