Mysql ActiveRecord:仅当记录已过期且新记录不可用时才选择该记录

Mysql ActiveRecord:仅当记录已过期且新记录不可用时才选择该记录,mysql,activerecord,Mysql,Activerecord,目前,我正在使用ActiveRecord开发一个注册模型,该模型具有以下属性: 发行日期 有效期 注册状态 学生证 我试图实现的是为每个学生显示一个注册另一个模型:只有当最新学生的注册过期而新注册不可用时,一个学生才会有很多注册 为了让事情更清楚一点,假设我有两份来自两个不同学生的注册书,于2014年9月23日发布,现已过期。今天我决定为其中一个学生发行一期新的,所以现在我们有一个学生有一个活跃的注册,另一个有一个过期的注册。应筛选具有活动注册的学生,且该学生不应出现,而具有过期注册的学生应出现

目前,我正在使用ActiveRecord开发一个注册模型,该模型具有以下属性:

发行日期 有效期 注册状态 学生证 我试图实现的是为每个学生显示一个注册另一个模型:只有当最新学生的注册过期而新注册不可用时,一个学生才会有很多注册

为了让事情更清楚一点,假设我有两份来自两个不同学生的注册书,于2014年9月23日发布,现已过期。今天我决定为其中一个学生发行一期新的,所以现在我们有一个学生有一个活跃的注册,另一个有一个过期的注册。应筛选具有活动注册的学生,且该学生不应出现,而具有过期注册的学生应出现,只要未为其生成新注册

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

@expired_signups = Signup.where(
signup_status: 'Expired signup').group(:student_id).having(
"MAX(expiration_date) >= #{Date.today}").order(student_id: :desc)
无论学生是否有活动注册,查询都会显示最新的过期注册


任何帮助都将不胜感激,谢谢

也许你可以分享更多细节?在我看来,过期的注册总是有一个过期日期>=date.today,所以可能不需要这样。查询当前返回的是什么?@BenHawker与现在一样,查询返回创建的最新注册,无论是否过期。