0

나는 활동에 관련된 작업 모델을 가지고 있고이 같은 모든 작업 및 관련 활동과 배열/해시 싶어 :중첩 관계를 포함한 전체 목록을 어떻게 얻을 수 있습니까?

<% task_group =[ 
    ['Task1', {'Activity1' => 1, 'Activity2' => 2}], 
    ['Task2', {'Activity3' => 3, 'Activity4'=> 4}] 
    ] %> 
내가 Task.includes(:activities).all.map(&:name) 함께했다

을하지만 이것은 단지 나에게 활동 목록을 제공 및 그들의 이름.

중첩 관계를 포함한 전체 목록을 얻으려면 어떻게해야합니까?

내 모델 (고화질)는 :

class Task < ActiveRecord::Base 
    has_many :activities 

class Activity < ActiveRecord::Base 
    belongs_to :task 
+1

가 왜 .MAP'하고있는 (이름) '부분을 , 뭘 위해서? –

+0

배열의 일종을 얻기 위해 .map을 사용해야한다고 생각 했나요? – tonymarschall

+1

아니요, 배열 호출 '.all.to_a'를 얻으려고합니다. –

답변

1

당신은 사용할 수 있습니다

Task.includes(:activities).all.map{|t| [t.name, t.activities.inject({}){|H, a| H[a.name] = a.id; H}]} 

편집 :

Task.includes(:activities).all.map{|t| [t.name, t.activities.inject({}){|h, a| h[a.name] = a.id; h}]} 
+0

멋져 보이지만 오류가 발생했습니다 '공식적인 인수는이 부분에 상수가 될 수 없습니다'| H, a | ' – tonymarschall

관련 문제