活动记录中属性的比较

时间:2015-05-04 07:52:59

标签: sql ruby-on-rails activerecord

在我的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 ....

1 个答案:

答案 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