Jeg tror, du leder efter en forespørgsel som denne:
SELECT * FROM (SELECT widgetstats.*, row_number() OVER () AS rownum FROM widgetstats ORDER BY id) stats WHERE mod(rownum,3) = 0
Dette er svært at bygge ved hjælp af ActiveRecord, så du kan blive tvunget til at gøre noget 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 vil naturligvis gerne ændre den anvendte rækkefølge og tilføje eventuelle WHERE-klausuler eller andre ændringer, så de passer til dine behov.