在我的Rails应用程序中,我有两个模型:学生和课程。
学生有许多课程。
在rails控制台中运行student .first.courses命令将返回属于第一个学生的课程集合。
我想知道是否有可能写一个命令来检查是否有任何学生上了某门课。
例如,如果我想看看是否有学生把"英语"作为他们的课程之一,我该怎么写呢?
任何帮助将非常感激-谢谢!
对,这绝对是可能的:
Student.joins(:courses).where(courses: { name: 'English' })
根据Andrey的回答,您可以将其封装在Student模型中的作用域中,如下所示:
scope :taking, ->(subject_name) { joins(:courses).where(courses: {name: subject_name})}
,然后和:
一起使用Student.taking("English")