Rails 4范围模型与关联也作用域

时间:2014-06-05 21:28:15

标签: ruby-on-rails ruby-on-rails-4 scope

我有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我什么都没得到(空数组)。我怎样才能得到正确的学生?

1 个答案:

答案 0 :(得分:1)

我不知道数据库中day值的代表什么,但此代码暗示它是此日期的工作日:

scope :training_today, -> {
  includes(:schedules).where(schedules: { active: true, day: Date.current.wday }) 
}