在我的rails应用程序中,我有两个模型Student和StudentRecord。 student.rb has_many:student_records
在student_records_controller中我想搜索所有学生那些查询参数多的记录。学生记录的两个属性是date_recorded和status。
所以,在一个特定的搜索中,我想获得一个状态为“失败”的学生的最新记录。但只有在没有“通过”的情况下在它之后记录。
scope = StudentRecord.join(:student)
.
.
.
#so a query something like the following
scope.where("status = ?", params[:search][:status]).having ....
答案 0 :(得分:0)
@Tiamon是否可以在从数据库中检索记录后在内存中进行过滤? 是这样,您可以这样做:
可能需要进一步优化
student_records = StudentRecord.join(:student).order('students_records.date_recorded')
found_records = student_records.each_with_index do |student_record, index|
if student_record.state == 'fail'
if ((student_records[index + 1] && student_records[index +1].state != 'pass') || !student_records[index + 1])
student_record
end
end