gpt4 book ai didi

sql - rails : How to fetch records that are 2 'has_many' levels deep?

转载 作者:行者123 更新时间:2023-12-05 08:59:35 27 4
gpt4 key购买 nike

我设置了这些模型:

Course
has_and_belongs_to_many Student

Student
has_and_belongs_to_many Course
has_many Books

Book
belongs_to Student

如何使用 ActiveRecord 有效地获取类(class)的所有书籍?

最佳答案

试试这个:

Course.includes(:students => { :books })

文档是 here ,在“预加载关联”下。

已编辑

抱歉,我看错了问题。我看到您的重点是给定类(class)的书籍。在那种情况下,我会推荐这样的东西:

Book.includes(:student => :courses).where(["course.id = ?", @course.id]).limit(5)

将此作为方法添加到 Course 模型中可能会更容易:

class Course < ActiveRecord::Base
def books(max = 10)
Book.includes(:student => :courses).where(["course.id = ?", self]).limit(max)
end
end

该代码可能不完全正确,但它应该能为您提供正确的思路。

此外,您可能还想看看 this自己定义这些东西的潜在替代解决方案的问题。

关于sql - rails : How to fetch records that are 2 'has_many' levels deep?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13041605/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com