按小于或等于自己的值过滤连接表

时间:2014-10-07 19:35:39

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord ruby-on-rails-4

我希望发布所有出勤率小于或等于(< =)当前记录的记录,但我正在苦苦挣扎。

我的模特是......

class Student < ActiveRecord::Base

    has_many :attendances
    has_many :classes, :through => :attendances 

end

class Attendance < ActiveRecord::Base

    belongs_to :student
    validates :student_id, presence: true
    belongs_to :class
    validates :class_id, presence: true

end

class Class < ActiveRecord::Base

    has_many :attendances
    has_many :students, :through => :attendances    

end

我想向所有其他学生展示&lt; =他们,但我的计算错误。

所以这是关于学生的#39;页面,它显示了一个班级中其他学生的表,他们的出勤率小于或等于他们自己的。

有人提醒我;

<% student_attend = @student.attendance.sum(:attend) %>

<% @student.joins(:attendance).where("attendance.attend <= ?", student_attend).each do |student| %>

......但这并不像我希望的那样。

有人能够指出我正确的方向吗?

提前谢谢!如果有人可以提供帮助,请尽快给PayPal一些咖啡钱: - )

1 个答案:

答案 0 :(得分:0)

您可以在控制器级别或模型级别使用以下代码段。如果你在控制器级别使用它会更好。

您当前的学生对象为@student

@ids=[]
Student.find(:all).each do |stu|
   @ids.push stu.id if stu.attendances.count<=@student.attendances.count
end