복붙노트

[RUBY-ON-RAILS] 레일 - 중첩은 활성 레코드에 포함?

RUBY-ON-RAILS

레일 - 중첩은 활성 레코드에 포함?

내가 가져 이벤트 목록을 가지고있다. 나는이 사건 각 사용자에 관련된 모든 프로필에 연결된 모든 사용자를 포함하는 것을 시도하고있다. [사용자는 자신의 프로필을 포함하지만 얻는다.

겠습니까 나는이 작업을 수행하는 방법

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

워드 프로세서는 명확하지 않는 것 : http://guides.rubyonrails.org/active_record_querying.html

해결법

  1. ==============================

    1.나는 다음 당신을 위해 작동합니다 생각합니다.

    나는 다음 당신을 위해 작동합니다 생각합니다.

    Event.includes(users: :profile)
    

    당신이 연결을 포함 할 경우 이미 포함되어 협회의 (우리가 C를 호출 할 것이다), 당신은 위의 구문을 사용하십시오 (우리는 B를 호출 것이다). 그러나 레일 가이드의 예에 주어진대로 배열을 사용하십시오 때의 그 또한 B의 협회 인뿐만 아니라 D를 포함하려는 경우.

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

    당신은 (당신이 실제로 필요한 경우) 둥지처럼 포함에 할 수있었습니다. 말은 또한 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)
    
  2. ==============================

    2.사람이 중첩 된 JSON을 생성하기 위해 respond_to 블록을하고있는 경우에, 당신은 뭔가를 할 수 있습니다 :

    사람이 중첩 된 JSON을 생성하기 위해 respond_to 블록을하고있는 경우에, 당신은 뭔가를 할 수 있습니다 :

    respond_to do |f|
      f.json do
        render json: event.to_json(include: {users: {include: :profile} }), status: :ok
      end
    end
    
  3. ==============================

    3.조 케네디의 솔루션을 참조하십시오.

    조 케네디의 솔루션을 참조하십시오.

    여기에 (미래의 나를 위해)보다 읽기 쉬운 예입니다.

    includes(
      :product,
      :package, {
        campaign: [
          :external_records,
          { account: [:external_records] },
          { agency: [:external_records] },
          :owner,
          :partner,
        ]
      }
    )
    
  4. from https://stackoverflow.com/questions/24397640/rails-nested-includes-on-active-records by cc-by-sa and MIT license