ruby-on-rails - 在事件记录中使用带有构造查询的分页

标签 ruby-on-rails ruby activerecord will-paginate

我正在尝试按照以下方式做一些事情:

if start_date?
  query = where("datetime > :start_date", :start_date => start_date)
end

if end_date?
  query = where("datetime <= :end_date", :end_date => end_date)
end

if client
  query = where("client.name LIKE :client", :client => client)
end

if staff
  query = where("staff.name LIKE :staff", :staff => staff)
end

paginate :per_page => 20, :page => page,
           :conditions => query,
           :order => 'datetime'

我找不到任何关于如何构建查询并将其与分页插件一起使用的示例。当然,查询还不正确,因为我必须弄清楚如何进行连接,以便我可以查询其他表中的其他属性,但除此之外,您如何构建查询以在条件下使用?

最佳答案

您想将 .paginate 调用放在 where 调用链的末尾,就像这样(所有一行,为了便于阅读而分开)

SomeClass.where("datetime > :start_date", :start_date=>start_date).
  where("datetime < :end_date", :end_date=>end_date).
  paginate(:per_page=>20,:page=>page)

如果你想有条件地添加条件,你也可以这样做,比如:

x = SomeClass
x = x.where("datetime > :start_date", :start_date=>start_date) if start_date
x = x.where("datetime < :end_date", :end_date=>end_date) if end_date
x.paginate(:per_page=>20,:page=>page)

关于ruby-on-rails - 在事件记录中使用带有构造查询的分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9520881/

相关文章:

ruby-on-rails - 如何使用事件记录批量处理 each_cons

ruby-on-rails - 保存我的 "Stop"模型实例时未定义的方法

ruby - 有没有办法为 heroku 上的 Ruby on Rails 应用程序设置简单的 http 身份验证?

mysql - ActiveRecord多关联查询

php - Yii2 - 事件记录中的传递依赖

ruby-on-rails - Rails 项目 : NoMethodError: undefined method `identifier' for String

javascript - <div> 的大小应始终保持不变

ruby-on-rails - 从正则表达式数组中查找正则表达式匹配项

ruby-on-rails - 在哪里可以找到有关使用 Rails 进行 OpenID 身份验证的一些最新信息?

ruby-on-rails - 正确安装 RVM,安装 gems 时不断询问密码