首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails +忽略现有记录,如果它的主值存储在不同的表中

Rails +忽略现有记录,如果它的主值存储在不同的表中
EN

Stack Overflow用户
提问于 2015-12-01 07:21:48
回答 2查看 27关注 0票数 0

在Rails中,非常基本的东西我没有尝试,但没有得到选择。我正在尝试获取没有奖学金数据的用户的值。

学生

代码语言:javascript
运行
复制
[ id, name, standard ]    
1, John, X
2, Alex, XII
3, James, X
4, Steve, XI
5, Richard, XI

ScholarShip

代码语言:javascript
运行
复制
[ id, student_id, type_of_scholarship ]
1, 1,"Edward Scholar"
2, 3,"McVince Scholar"  

学生has_one ScholarShip作为协会

现在我正在尝试创建对象的学生记录,没有奖学金在UI创建下拉列表

Rails:@student = Student.some_method_to_fetch_those_students_dnt_have_scholarship

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-01 07:43:38

你可以通过这样做得到没有奖学金的学生:-

代码语言:javascript
运行
复制
Class Student
    def self.get_students_which_has_not_scholarship
        students = self.all
        scholar_ship_students_ids = Scholarship.pluck(:student_id)
        students.select{ |student| !scholar_ship_students_ids.include?(student.id) }
    end
end

然后你就可以称之为:-

代码语言:javascript
运行
复制
@students = Student.get_students_which_has_not_scholarship
票数 0
EN

Stack Overflow用户

发布于 2015-12-01 07:53:27

你想要的东西

代码语言:javascript
运行
复制
Student.joins("LEFT JOIN Scholarship ON Student.id = ScholarShip.student_id").where("ScholarShip.id IS NULL")

您可以在“学生”上将其作为一个范围,并将其命名为您喜欢的名称:

代码语言:javascript
运行
复制
scope :without_scholarships, -> {
   joins("LEFT JOIN Scholarship ON Student.id = ScholarShip.student_id").where("ScholarShip.id IS NULL")
}

调用它就像调用类方法一样

代码语言:javascript
运行
复制
Student.without_scholarships

这将返回一个可以链接在一起的关系,即

代码语言:javascript
运行
复制
Student.without_scholarships.order(:grade_point_average)

或者其他什么

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34014754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档