Rails:选择具有最大日期的记录

时间:2017-02-27 23:56:50

标签: ruby-on-rails postgresql rails-activerecord

在我的应用中,用户可以保存指定日期的销售报告。我现在要做的是查询数据库并仅选择最新的销售报告(所有那些在我的表中具有最大日期的报告)。

我知道如何按日期对所有报告进行排序并选择具有最高日期的报告 - 但我不知道如何检索具有最高日期的多个报告。

我怎样才能实现这一目标?我正在使用Postgres。

2 个答案:

答案 0 :(得分:10)

这样的东西?

class ItemForm(FlaskForm):
  id = StringField('id')
  name = StringField('Name')
  cancel = SubmitField('Cancel')
  submit = SubmitField('Submit')

def validate(self):                                                         

    rv = Form.validate(self)                                                

    if not rv:                                                              
        return False                                                        

    if self.cancel.data
        return True

    if self.id.data is None or self.name.data is None:   
        return False                                                   

    return True  

编辑:为了让下面的@ muistooshort评论可见,您可以使用以下表单将两个查询缩减为单个查询(使用子选择):

SalesReport.where(date: SalesReport.maximum('date'))

如果您的Web主机和数据库主机之间存在大量延迟,则可能会使执行时间缩短一半。它几乎总是首选的形式。

答案 1 :(得分:1)

您可以获取搜索匹配报告的最长日期:

max_date = Report.maximum('date')
reports = Report.where(date: max_date)