ActiveRecord:仅在记录已过期并且新记录不可用时选择记录

时间:2016-03-19 05:14:18

标签: mysql activerecord

目前,我正在使用ActiveRecord处理Signup模型,该模型具有以下属性:

  • ISSUE_DATE
  • 到期日期
  • signup_status
  • student_id数据

我想要达到的目的是每个学生只注册1次注册(另一个模型:学生有很多注册),只有当最新学生的注册已经过期并且新学生没有注册时才会注册。可用。

为了让事情更清楚一点,让我们说我在2014年9月23日发布了两个不同学生的2次注册,现在已经过期了。今天我决定为其中一个学生生成一个新问题,所以现在我们有一个学生有一个活跃的注册,另一个有一个过期的注册。具有活动注册的学生应该被过滤并且不应该出现,而具有过期注册的学生应该出现,只要没有为他生成新的注册。

我最接近实现目标的是使用以下AR查询但没有成功:

@expired_signups = Signup.where(
signup_status: 'Expired signup').group(:student_id).having(
"MAX(expiration_date) >= #{Date.today}").order(student_id: :desc)

无论学生是否有有效注册,查询都会显示最新的过期注册。

非常感谢任何帮助,谢谢!

0 个答案:

没有答案