小编典典

Rails - Active Records 上的嵌套包含?

all

我有一个我获取的事件列表。我试图包括与此事件关联的每个用户以及与每个用户关联的每个配置文件。用户被包括在内,但不包括他们的个人资料。

我该怎么做

Event.includes(:users [{profile:}])

文档似乎不清楚: http:
//guides.rubyonrails.org/active_record_querying.html


阅读 60

收藏
2022-06-28

共1个答案

小编典典

我相信以下内容应该对您有用。

Event.includes(users: :profile)

如果你想包含一个已经包含的关联(我们称之为 B)的关联(我们称之为 C),你将使用上面的语法。但是,如果您还想包含 D,它也是 B
的关联,那么您将使用Rails
Guide
中示例中给出的数组。

A.includes(bees: [
  :cees, 
  :dees
])

您可以继续嵌套这样的包含(如果您确实需要)。假设 A 也与 Z 相关联,而 C 与 E 和 F 相关联。

A.includes({
  bees: [{
    cees: [:ees, :effs]
  }, :dees]
}, :zees)

为了好玩,我们还会说 E 与 J 和 X 相关联,而 D 与 Y 相关联。

A.includes({
  bees: [{
      cees: [{
        ees: [:jays, :exes]
      }, :effs]
    },
    {
      dees: :wise
    }
  ]
}, :zees)
2022-06-28