Ruby on rails 如何使用;其中;获取具有XYZ属性的父级的父级
使用ajaxdatatables-rails,我试图获取父模型的子记录 例如,我有一个名为Ruby on rails 如何使用;其中;获取具有XYZ属性的父级的父级,ruby-on-rails,Ruby On Rails,使用ajaxdatatables-rails,我试图获取父模型的子记录 例如,我有一个名为学校的家长模型,其中有许多教师,每个教师都有许多学生 如果我使用的是Student.joins(:teacher),但教师属于学校,我如何写这篇文章,以便它只收回属于某个学校的教师的学生 我试图找到一种方法来做一些类似的事情:Student.joins(:teacher=>[:school where school\u name==“hello world”]),尽管我知道这不是正确的语法 以下是模型结构:
学校
的家长模型,其中有许多教师
,每个教师都有许多学生
如果我使用的是Student.joins(:teacher)
,但教师属于学校,我如何写这篇文章,以便它只收回属于某个学校的教师的学生
我试图找到一种方法来做一些类似的事情:Student.joins(:teacher=>[:school where school\u name==“hello world”])
,尽管我知道这不是正确的语法
以下是模型结构:
# app/models/school.rb
class School < ApplicationRecord
has_many :teachers
end
#app/models/school.rb
班级学校<申请记录
你有很多老师吗
结束
#app/models/teacher.rb
班主任<申请记录
属于:学校
你有很多学生吗
结束
#app/models/student.rb
班级学生<申请记录
属于:老师
结束
首先进行连接,然后对感兴趣的表进行筛选:
Student.joins(teacher: :school).where(schools: { name: "hello world" })
您还可以通过关联使用
has\u many来实现这一点
app/models/school.rb
对不起,我误导了你。我将从School
中查找除ID以外的特定属性。例如,School\u name
。非常感谢!这实际上非常有效。如果可以的话,我还有一个问题。如果我多做了一个模型呢?例如,考试属于学生,属于老师,属于学校,在最后的结果中,我想得到那些最终以学校名称“hello world”结束的记录?那就多加一层?那看起来怎么样?谢谢!这实际上对我的一个示例也有帮助,因为我在ajax datatables rails中遇到了另一个错误
# app/models/student.rb
class Student < ApplicationRecord
belongs_to :teacher
end
Student.joins(teacher: :school).where(schools: { name: "hello world" })
class School < ApplicationRecord
has_many :teachers
has_many :students, through: :teachers
end
class Teacher < ApplicationRecord
belongs_to :school
has_many :students
end
class Student < ApplicationRecord
belongs_to :teacher
end
School.find_by_name('ABC School').students