Je pense que vous recherchez une requête comme celle-ci :
SELECT * FROM (SELECT widgetstats.*, row_number() OVER () AS rownum FROM widgetstats ORDER BY id) stats WHERE mod(rownum,3) = 0
C'est difficile à construire avec ActiveRecord, vous pourriez donc être obligé de faire quelque chose comme :
@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
}
)
Vous souhaiterez évidemment modifier l'ordre utilisé et ajouter des clauses WHERE ou d'autres modifications en fonction de vos besoins.