1. ホーム
  2. ruby-on-rails

[解決済み] Rails - アクティブレコードにネストされたインクルード?

2022-04-13 04:36:57

質問

取得したイベントのリストがあります。 このイベントに関連するすべてのユーザーと、各ユーザーに関連するすべてのプロファイルを含めようとしています。ユーザーは含まれますが、彼らのプロファイルは含まれません。

どうすればいいですか?

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

ドキュメントが明確でないようです。 http://guides.rubyonrails.org/active_record_querying.html

解決方法は?

以下のようにすれば、うまくいくと思います。

Event.includes(users: :profile)

すでに含まれている関連(Bとします)の関連(Cとします)を含めたい場合は、上記の構文を使用します。しかし、B のアソシエーションである D も含めたい場合は、次の例のように Railsガイド .

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)