在我的Rails应用程序中,我有2个模型:学生和课程。ActiveRecord:通过嵌套记录属性筛选记录
学生有很多课程。
将命令Student.first.courses运行到rails控制台中会导致属于返回的第一个学生的课程集合。
我想知道的是,如果有可能编写一个命令来检查是否有任何学生有特定的课程。
例如,如果我想看看是否有任何“英语”的学生作为他们的课程之一,我会如何写这个?
任何帮助将不胜感激 - 谢谢!
在我的Rails应用程序中,我有2个模型:学生和课程。ActiveRecord:通过嵌套记录属性筛选记录
学生有很多课程。
将命令Student.first.courses运行到rails控制台中会导致属于返回的第一个学生的课程集合。
我想知道的是,如果有可能编写一个命令来检查是否有任何学生有特定的课程。
例如,如果我想看看是否有任何“英语”的学生作为他们的课程之一,我会如何写这个?
任何帮助将不胜感激 - 谢谢!
从安德烈的回答之后,你可以换,最多在一个范围内的学生模型中,像这样:
scope :taking, ->(subject_name) { joins(:courses).where(courses: {name: subject_name})}
,然后用使用它:
Student.taking("English")
当然属于学生?通过这种方式,您将拥有许多相同课程的实例(每个学生需要一次),您可能需要重新访问您的设计并拥有它,Student _ has和many_(或_has many through_,阅读两者的文档),这样你就可以在学生中共享一个“英语”实例。 – Leito