首页 > 解决方案 > rails:优化对单个 sql 查询的 ar 关系的多个 map 调用?

问题描述

我有以下关系:

class Bookmark
  belongs_to :collection
end

class Collection
  belongs_to :user
end

class User
  has_many :collections
end

我正在尝试使用以下地图调用获取外部表记录列表

Bookmark.where(id: [...]).map(&:collection).map(&:user)

这可行,但只是想知道是否有任何方法可以将其优化为单个 sql 查询?在将连接用于 has_many 关联之前,我已经这样做了,但我不确定如何将它应用于像上面这样的单个子关联。

标签: ruby-on-railsrubyactiverecord

解决方案


是的,应该是一样的

User.joins(:collections).where(collections: { bookmark_id: [...] })

推荐阅读