foo*_*bar 1 sql activerecord ruby-on-rails
我已经设置了这些模型:
Course
has_and_belongs_to_many Student
Student
has_and_belongs_to_many Course
has_many Books
Book
belongs_to Student
Run Code Online (Sandbox Code Playgroud)
如何使用ActiveRecord高效获取课程的所有书籍?
试试这个:
Course.includes(:students => { :books })
Run Code Online (Sandbox Code Playgroud)
文档在这里,在"渴望加载关联"下.
编辑
对不起,我误解了这个问题.我看到你关注的是特定课程的书籍.在这种情况下,我会建议这样的事情:
Book.includes(:student => :courses).where(["course.id = ?", @course.id]).limit(5)
Run Code Online (Sandbox Code Playgroud)
在Course模型上添加此方法可能更容易:
class Course < ActiveRecord::Base
def books(max = 10)
Book.includes(:student => :courses).where(["course.id = ?", self]).limit(max)
end
end
Run Code Online (Sandbox Code Playgroud)
该代码可能不完全正确,但它应该给你正确的想法.
此外,您可能希望查看此问题,以寻找自己定义此内容的潜在替代解决方案.
| 归档时间: |
|
| 查看次数: |
4225 次 |
| 最近记录: |