我有2个模型,学生(has_many时间表)和时间表,我想要的是找到今天有活跃时间表的所有学生。
我现在拥有的:
学生模特:
scope :training_today, -> { joins(:schedules) & Schedule.active & Schedule.from_today }
两个计划范围都可以正常工作。见这里:
$ Schedule.active.from_today
Schedule Load (1.4ms) SELECT "schedules".* FROM "schedules" WHERE "schedules"."active" = 't' AND "schedules"."day" = 4 ORDER BY day ASC
=> [#<Schedule id: 47, student_id: 2, hour: "11", active: true, created_at: "2014-05-18 23:26:34", updated_at: "2014-06-05 19:04:02", day: 4>,
#<Schedule id: 5, student_id: 1, hour: "08:00", active: true, created_at: "2014-05-16 02:54:21", updated_at: "2014-06-05 20:50:07", day: 4>]
我想要的是什么:
从我的学生模型中,我只想找到上述查询中的那些(ids 1和2)。使用范围Student.training_today我什么都没得到(空数组)。我怎样才能得到正确的学生?
答案 0 :(得分:1)
我不知道数据库中day
值的代表什么,但此代码暗示它是此日期的工作日:
scope :training_today, -> {
includes(:schedules).where(schedules: { active: true, day: Date.current.wday })
}