在Ruby中修改用于'will_paginate'的SQL查询

时间:2012-11-01 21:57:13

标签: ruby-on-rails ruby ruby-on-rails-3 will-paginate kaminari

我有以下SQL查询,用于从mySQL数据库中获取一些行:

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'宝石。但我不知道如何使用如上所示的某些条件查询数据库。

有人可以帮我处理代码吗?

1 个答案:

答案 0 :(得分: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) #=> [...]