Rails:group_by 然后映射孩子

Posted

技术标签:

【中文标题】Rails:group_by 然后映射孩子【英文标题】:Rails: group_by then map children 【发布时间】:2020-06-11 23:04:55 【问题描述】:

我有一个看起来像这样的方法:

def categorised_templates
  template_categories.all_parents.map do |cat|
    cat.templates.by_brand(id).group_by(&:category)
  end
end

返回如下内容:

["Communications":["#<Template:0x00007fef0efcdd48>","#<Template:0x00007fef0efcdb90>"],"Beta":["#<Template:0x00007feefe1bb008>"]]

如何将Template 对象像类别一样呈现为 JSON?我需要维护group_by 层次结构。

【问题讨论】:

【参考方案1】:

事实证明这很容易。这种变化:

def categorised_templates
  arr = template_categories.all_parents.map do |cat|
    cat.templates.by_brand(id).group_by(&:category)
  end

  arr.map  |cat| cat.transform_values!(&:to_s) 
end

返回此结果。

["Communications":"[#<Template id: 2, ...]"]

【讨论】:

以上是关于Rails:group_by 然后映射孩子的主要内容,如果未能解决你的问题,请参考以下文章

Rails 3.2.8 + RestKit - 没有 KVC 的映射

在 Rails 上使用唯一 id ruby​​ 映射日期

动态 URL -> Rails 中路由的控制器映射

映射和加入视图中的计算值(Rails)

单表继承 活动管理模型映射问题 rails 4

要映射到 rails 4 中的自定义路径的资源路由