问题:我想在学生/演出中只显示即将到来的参加者(不是过去的参加者)。
我有
- scaffold lesson name starts_at:datetime ends_at:datetime
,
- scaffold attendance student:references lesson:references
,
- scaffold student name
student has_many :attendances
,lesson has many :attendances
,student has_many :lessons, through: :attendances
我试过
students_controller.rb:
@future_attendances = @student.attendances.where('lesson.starts_at > ?', Time.now)
学生/ show.html.haml:
%table
%thead
%tr
%th Title
%th Starts at
%tbody
- @future_attendances.each do |attendance|
%tr
%td= attendance.lesson.name
%td= attendance.lesson.starts_at
但它不起作用。有什么想法吗?
答案 0 :(得分:1)
在黑暗中拍摄,你不能只做:
@future_lessons = @student.lessons.where('starts_at > ?', Time.now)
然后:
%tbody
- @future_lessons.each do |lesson|
%tr
%td= lesson.name
%td= lesson.starts_at
您当前的代码无效,因为您在课程表中查找了一列。您需要使用joins
方法将课程表添加到查询中以使其工作。但是,我认为上面这一行是你真正想要的。