获取X和X个月之间首次提交状态的Rails数据库记录

问题描述 投票:0回答:1

我的任务是在服务中获取一些记录。记录是表单的历史记录。我需要查找某些月份之间的所有表格,这是第一次“状态” === 0(0 =进行中的表格,4 =完成的表格)。我需要设计有关此服务的优雅解决方案的帮助。

表单记录基本上是这样的{数据:{很多表格信息},状态:0,已更新,已创建,等}

用伪代码,我想要这样的东西

myService.getFirstSubmittedForms('12 / 31/18','2/31/19')//这将返回所有第一个提交的表单

getFirstSubmittedForm将执行类似的过程:

查找给定月份范围内的所有表单,其中status === 4 //可以多次/返回/提交表单摆脱重复并获得最早的记录

谢谢

到目前为止,我有

      beginning_of_month = DateTime.new(start_date[:year], start_date[:month], start_date[:day])
      end_of_month = DateTime.new(end_date[:year], end_date[:month], end_date[:day])

      FormHistoryRecord.where(created_at: beginning_of_month..end_of_month)

我的下一步是找到状态== 4(已提交)的每种表单的第一条记录

这是我要返回的数据的示例

[ 
  {form_id: 1, status: 0, created_at: date form was created},
  {form_id: 1, status: 4, created_at: first submitted date}, //record i want
  {form_id: 1, status: 2, created_at: date form was returned},
  {form_id: 1, status: 4, created_at: date form was resubmitted},
  {form_id: 2, status: 0, created_at: date form was created},
  {form_id: 2, status: 4, created_at: first submitted date}, //record i want
  {form_id: 2, status: 2, created_at: date form was returned},
  {form_id: 2, status: 4, created_at: date form was resubmitted},
  {form_id: 3, status: 0, created_at: date form was created},
  {form_id: 3, status: 4, created_at: first submitted date}, //record i want
  {form_id: 3, status: 2, created_at: date form was returned},
  {form_id: 3, status: 4, created_at: date form was resubmitted},
  ]
ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-5
1个回答
0
投票

我会做这样的事情:

  1. 创建一个名为first_submission_date的新属性
  2. 每当用户达到其状态4时更新(但是您的程序执行此操作)

关于用户首次提交其实际记录的时间,该记录将存储在updated_at中,但是每当再次对其进行编辑时将被覆盖。您应该分别跟踪该第一次提交的数据。

© www.soinside.com 2019 - 2024. All rights reserved.