我正在尝试查找满足两个条件的所有相关记录。 我正在尝试这个,但它不起作用,例如:
@students = @group.students
.includes(:attendances)
.where.not(attendances: {student_id: @ids, event_time_id: @event_id})
@students = @group.students
.includes(:attendances)
.where.not(attendances: {event_time_id: @event_id})
.where.not(attendances: {student_id: @ids})
@students = @group.students
.includes(:attendances)
.where("attendances.student_id IN (?) AND NOT attendances.event_time_id = ?", @ids, @event_id)
我想获取群组中存在的所有学生记录,但没有出席@event_id
或根本没有出席。
答案 0 :(得分:0)
我认为这可能会做你想要的(未经测试),而不是最优雅的代码......
[a]
答案 1 :(得分:0)
工作解决方案:
@students = @group.students.includes(:attendances)
.where("attendances.event_time_id != ?", @event_id)
.references(:attendances)
@students_on = @group.students.includes(:attendances)
.where(attendances: { event_time_id: @event_id })
@students = @students - @students_on
不确定这是否是最佳解决方案,但它解决了上述问题
<强>更新强> 代码版本更少:
@students = @group.students
@students_exist = @group.students.includes(:attendances)
.where(attendances: { event_time_id: @event_id })
@students = @students - @students_exist