我正在开发一个Rails应用程序,从约翰·霍普金斯新冠肺炎Github项目中提取数据,并计算病例和死亡的日增长率。我之所以开始这样做,是因为我想看到我所在的纳什维尔市的数据每天都在变化。目前,我有一个硬编码的html表,它的你可以在这里看到,但我试图使它的动态,以便它工作的每个县在美国。
此时,我无法对数据库建模,并计算before_save回调的日增长率,因为我不知道如何查找所需的记录。
,在rails中查找记录是一种很好的方法,这是与您正在查找的记录相邻的前一个记录?我甚至不知道如何用英语清楚地说出这一点,这可能是我无法将其转化为代码的问题的根源。例如,今天与昨天或3月28日与3月27日或3月31日与3月30日等。我需要根据日期找到第一份记录,然后找到前一天的最后记录。
它应该类似于这个before_save回调:
def calculate_case_growth_rate
current_cases = self.cases
previous_cases = Update.where(date: 1.day.ago).sum(:cases)
self.case_growth_rate = (current_cases - previous_cases) / current_cases
end这是发生回调的模型。
但是,这种方法不能工作,因为在某些时候,数据可能对以前的日期是不正确的,并且需要进行更新。例如,田纳西州卫生部门可能会发现他们有3月31日的错误数据,所以约翰霍普金斯大学的数据会被更新,因此我的数据库中的记录需要更新。因此,在上面的代码中,第一次发生这种情况时,它会调用Update.last,并将一个不正确的增长率保存到3月31日。因此,无论是计算今天对昨天的增长率还是3月28日对3月27日的增长率,我都需要回调。
这是一个开放的项目,所以整个应用程序是这里。(如果你想直接帮忙,请发出拉请求!)
发布于 2020-04-02 15:21:23
据我所知,你需要前一天的案子。假设今天是4月2日,那么你需要4月1日的情况,然后计算增长率。要得到前一天的案例,你能做的就是做这样的事情。Update.where(date: 1.day.ago),这将返回前一天的情况。我已经从您的模式中查找了date属性。希望它能帮上忙
更新:因此,要求从以前的日期中获取相对于当前日期的案例,然后计算由
before_save :calculate_case_growth_rate
def calculate_case_growth_rate
current_cases = self.cases
previous_cases = Update.where(date: (self.date - 1.day)).sum(:cases)
self.case_growth_rate = ((current_cases - previous_cases) / current_cases)
endhttps://stackoverflow.com/questions/60994412
复制相似问题