【问题标题】:Creating filtering by 'Created_at' and/or presence of data in multiple columns通过“Created_at”和/或在多列中存在数据创建过滤
【发布时间】:2015-08-12 18:07:53
【问题描述】:

这里是大新手。最近开始使用rails。我一直在搜索,并且一直停留在已达到过滤的前进进度上。

目前在我的索引页面上,我正在显示所有创建的订单。客户(名字、姓氏)通过“现金”、“信用”或“支票”支付(以十进制 (8,2) 显示)。我想创建一个过滤器,经理可以在其中单击 DATE ,过滤任何付款类型(现金、信用卡或支票),以进行对账。

我已经搜索了很多并且对使用什么方法感到困惑。我最好的猜测是我必须使用某种“范围”方法?如果你能指出我正确的方向,我想自己解决。提前致谢!

【问题讨论】:

  • 嗨,欢迎来到 Stack Overflow。那么......当你试图制作一个范围时发生了什么?我们不会为您编写代码 - 但如果您尝试并遇到困难,我们将帮助您克服错误。所以:自己尝试一下,如果没有按您需要的方式工作,请联系我们。

标签: ruby-on-rails search filter


【解决方案1】:

范围在 ruby​​ 中很棒。

http://apidock.com/rails/ActiveRecord/NamedScope/ClassMethods/scope

如果您想按特定日期过滤。假设您想要今天之后应该发生的所有事情,您执行以下操作。将这样的范围定义放在您想要范围的模型中。让我们称之为 Mimodel

scope :post_dated, where("created_at > CURRENT_TIMESTAMP")

这是一个愚蠢的例子,但仍然是一个例子。如果你想在给定日期之后过滤,你可以使用 lambdas

scope :post_dated, lambda { |date| where("DATE(created_at) > ?" date) }

然后在第一个示例中通过调用 Mimodel.post_dated 来调用它们,您将获得今天之后发生的所有 Mimodel 对象。对于第二个示例,您调用 Mimodel(Date.today) 以获得相同的影响或 Mimodel((Time.now-30.days)) 30 天前。

我看不到您的具体问题,因此我无法提供帮助,但作用域可帮助您将各种查询定义为单个代码优先调用。

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 2013-05-06
    • 2017-04-01
    • 1970-01-01
    • 2014-11-09
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多