Tôi nghĩ bạn đang tìm một truy vấn như sau:
SELECT * FROM (SELECT widgetstats.*, row_number() OVER () AS rownum FROM widgetstats ORDER BY id) stats WHERE mod(rownum,3) = 0
Điều này khó xây dựng bằng ActiveRecord, vì vậy bạn có thể bị buộc phải làm một số việc như:
@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
}
)
Rõ ràng là bạn sẽ muốn thay đổi thứ tự đã sử dụng và thêm bất kỳ điều khoản WHERE nào hoặc các sửa đổi khác để phù hợp với nhu cầu của mình.