Jag tror att du letar efter en fråga som den här:
SELECT * FROM (SELECT widgetstats.*, row_number() OVER () AS rownum FROM widgetstats ORDER BY id) stats WHERE mod(rownum,3) = 0
Detta är svårt att bygga med ActiveRecord, så du kan bli tvungen att göra något som:
@widgetstats = self.widgetstats.find_by_sql(
%{
SELECT * FROM
(
SELECT widgetstats.*, row_number() OVER () AS rownum FROM widgetstats ORDER BY id
) AS stats
WHERE mod(rownum,3) = 0
}
)
Du kommer uppenbarligen att vilja ändra beställningen som används och lägga till eventuella WHERE-klausuler eller andra modifieringar för att passa dina behov.