Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用;其中;获取具有XYZ属性的父级的父级_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何使用;其中;获取具有XYZ属性的父级的父级

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”]),尽管我知道这不是正确的语法 以下是模型结构:

使用ajaxdatatables-rails,我试图获取父模型的子记录

例如,我有一个名为
学校
的家长模型,其中有许多
教师
,每个教师都有许多
学生

如果我使用的是
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