Использование разбиения на страницы при получении результатов по SQL-запросу в ruby

У меня есть следующий запрос в моем контроллере Rails:

SELECT CODE_VER FROM MASTERTEST WHERE DATE>= DATE_SUB(CURDATE(), INTERVAL 90 DAY) ORDER BY DATE DESC;

Этот запрос возвращает мне результаты за последние 90 дней. Я отображаю все эти результаты в таблице прямо сейчас.

Я хочу показывать только строки за 7 дней в какой-то разбивке на страницы. Я пробовал will_paginate и kaminari, а также paginate_by_sql. Но я пока не добился успеха в использовании ни одного из них.

Может ли кто-нибудь показать мне точный синтаксис моего запроса?


person Pi Horse    schedule 29.10.2012    source источник
comment
Какой DBM вы используете? MySQL, PostgreSQL, Oracle, SQLite? Вы можете делать что хотите без плагинов, используя параметры limit и offset для select. Некоторые DBM не поддерживают offset, но имеют начальный/конечный диапазон для limit.   -  person the Tin Man    schedule 30.10.2012
comment
@theTinMan: я использую MySQL   -  person Pi Horse    schedule 30.10.2012
comment
MySQL limit принимает два параметра, SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15.   -  person the Tin Man    schedule 30.10.2012


Ответы (1)


сохранить результат в переменной, скажем, @result

В контроллере

@result=SELECT CODE_VER FROM MASTERTEST WHERE DATE>= DATE_SUB(CURDATE(), INTERVAL 90 DAY) ORDER BY DATE DESC;

@result.page(params[:page]).per(10)

В представлении используйте

<% paginate %> # to render the value page by page
person Narmadha    schedule 30.10.2012