目前,我正在使用ActiveRecord处理Signup模型,该模型具有以下属性:
我想要达到的目的是每个学生只注册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)
无论学生是否有有效注册,查询都会显示最新的过期注册。
非常感谢任何帮助,谢谢!