0

У меня есть модель задачи, связанные с деятельностью и я хочу, чтобы получить массив/хэш со всеми задачами и связанные с ними виды деятельности, как это:Как я могу получить полный список, включая вложенные отношения?

<% task_group =[ 
    ['Task1', {'Activity1' => 1, 'Activity2' => 2}], 
    ['Task2', {'Activity3' => 3, 'Activity4'=> 4}] 
    ] %> 

я придумал Task.includes(:activities).all.map(&:name), но это только дает мне список с деятельностью и их имя.

Как я могу получить полный список, включая вложенные отношения?

Моя модель Defintion:

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}]} 

EDIT:

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

это выглядит красиво, но я получил сообщение об ошибке «формальный аргумент не может быть константой» в этой части '| H, a |' – tonymarschall

Смежные вопросы