Ruby on rails 如何使用关联编写范围?

Ruby on rails 如何使用关联编写范围?,ruby-on-rails,ruby-on-rails-3,scope,Ruby On Rails,Ruby On Rails 3,Scope,你能帮我写下以下范围吗 Cv属于Student,我想写一个scope,它给我所有的cvs,其中Student至少有一个 教育(student.edcuations.any?)和学生有效(填写所有属性) 我想为Cv编写该范围 模型 我想我误解了你们模型的布局 我觉得应该更像这样,因为每个简历都会列出教育程度(否则,数据库中的简历是如何相互连接的) 不过,我可能只会使用类方法 #student.rb def cvs_with_education self.cvs.reject {|cv| cv

你能帮我写下以下范围吗

Cv
属于
Student
,我想写一个scope,它给我所有的cvs,其中Student至少有一个 教育(
student.edcuations.any?
)和学生有效(填写所有属性)

我想为
Cv
编写该范围

模型


我想我误解了你们模型的布局

我觉得应该更像这样,因为每个简历都会列出教育程度(否则,数据库中的简历是如何相互连接的)

不过,我可能只会使用类方法

#student.rb
def cvs_with_education
   self.cvs.reject {|cv| cv.educations.empty?}
end

我想我误解了你们模型的布局

我觉得应该更像这样,因为每个简历都会列出教育程度(否则,数据库中的简历是如何相互连接的)

不过,我可能只会使用类方法

#student.rb
def cvs_with_education
   self.cvs.reject {|cv| cv.educations.empty?}
end

查看的第11.2.3节,了解如何加入嵌套关联

差不多

scope :with_education, joins(:student => :educations).where("some conditions")

您可能希望定义一个
:有效的\u student
范围,然后在其中利用该范围。

查看的第11.2.3节,了解如何加入嵌套关联

差不多

scope :with_education, joins(:student => :educations).where("some conditions")

你可能想定义一个
:有效的\u student
范围,然后利用它。

学生有很多教育,因为教育包含他的部门和学院。学生可以接受多种教育。这一点我是肯定的。啊,这是公平的,我误解了教育表的要点(因为缺乏信息)。您是要返回所有定义了一种教育的学生的所有简历,还是只返回一个至少接受过一种教育的学生的简历?对于所有学生,这就是为什么我想到Scopes学生有很多教育,因为教育包含他的系和系。学生可以接受多种教育。这一点我是肯定的。啊,这是公平的,我误解了教育表的要点(因为缺乏信息)。您是在尝试为所有定义了一种教育的学生返回所有CV,还是仅为一个至少接受过一种教育的学生返回CV?对于所有学生,这就是为什么我认为Scope是检查每个属性的有效学生的更好方法
scope:with_valid_student,join(:student)。其中('first_name不为NULL,first_name不为NULL,email不为NULL(…等…)
首先我会问自己数据库中是否应该首先存在无效学生。也许您应该向Student类添加验证,以便只能创建有效记录。除此之外,答案几乎是否定的。ActiveRecord的“where”方法相当有限。不过,有些宝石会给你更多的力量。看看MetaWhere。对于检查每个属性的有效学生来说,是更好的方法吗
scope:with_valid_student,join(:student)。其中('first_name不为NULL,first_name不为NULL,email不为NULL(…等…)
首先我会问自己数据库中是否应该首先存在无效学生。也许您应该向Student类添加验证,以便只能创建有效记录。除此之外,答案几乎是否定的。ActiveRecord的“where”方法相当有限。不过,有些宝石会给你更多的力量。看看MetaWhere。