0

mySQLデータベースからいくつかの行をフェッチするために使用する次のSQLクエリがあります。

SELECT code_ver, result FROM mastertest WHERE date >= DATE_SUB( (CURDATE()) , INTERVAL 90 DAY) ORDER BY date DESC;

このクエリは、過去90日間のデータを提供します。ここで、html.erbページ(表示)に一度に10日間のデータを表示したいと思います。「will_paginate」と「kaminari」のgemを使用してページネーションを実行できることを認識しています。しかし、上記のような特定の条件でデータベースをクエリする方法がわかりません。

誰かがここのコードを手伝ってくれますか?

4

1 に答える 1

1

これは、ActiveRecordでそれを構築する方法です。

Mastertest.where('date >= ?', Time.now - 90.days ).order('date DESC').select("code_ver, result")

ここから、will_paginateまたはkaminariメソッドをチェーンするか、必要に応じて独自のメソッドをロールすることができます。頻繁に使用する場合は、そのクエリをクラスメソッドにロールインすることをお勧めします。

class Mastertest
  def self.last_90_days
    where('date >= ?', Time.now - 90.days ).order('date DESC').select("code_ver, result")
  end

  ## here's a simple pagination example:
  def self.page(page,per_page)
    limit(per_page).offset((page - 1) * per_page)
  end

end

Mastertest.last_90_days.page(1,20) #=> [...]
于 2012-11-01T22:46:19.693 に答える