gpt4 book ai didi

ruby-on-rails - Eager Load with #includes 两层或更深

转载 作者:数据小太阳 更新时间:2023-10-29 08:31:11 26 4
gpt4 key购买 nike

如何使用比一层更深的 includes 进行预加载?预加载一层很简单:

例如:

@blogs = Blog.all.includes(:user)

假设每个 blog 都有一个 belongs_to 关联到一个 user。因此:每个 blog 记录都有一个 user_id 属性。

现在:如果 user 与他们来自的 city 有一个 belongs_to 关联会怎么样。所以:每个 user 记录都有一个 city_id 属性。

我想做的是

  • 获取所有博客
  • 使用includes急切加载关联的用户
  • 急切加载博客的城市,这是通过浏览博客的关联用户 获取的。 (也许这也是通过 includes 完成的,但我不知道语法。

这里是模型:

# app/models/blog.rb
class Blog < ActiveRecord::Base
belongs_to :user
end

# app/models/user.rb
class User < ActiveRecord::Base
has_many :blogs
belongs_to :city
end

# app/models/city.rb
class City < ActiveRecord::Base
has_many :users
end

最佳答案

使用哈希语法显示嵌套的包含

@blogs = Blog.all.includes(:user => :city)

您可以在 ActiveRecord Query Interface guide 中阅读更多相关信息

关于ruby-on-rails - Eager Load with #includes 两层或更深,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33395082/

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