我有一个与活动相关的任务模型,我希望得到一个包含所有任务及其相关活动的数组/哈希,如下所示:
<% 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
答案 0 :(得分: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}]}