首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >has_ancestry和活动模型序列化程序

has_ancestry和活动模型序列化程序
EN

Stack Overflow用户
提问于 2015-11-12 19:19:04
回答 2查看 958关注 0票数 1

我有一台Category模型

代码语言:javascript
复制
class Category < ActiveRecord::Base
  attributes :id, :name, :order, :x, :y, :z
  has_ancestry
end

在我的控制器中,我可以使用以下代码来获取整个树作为JSON

代码语言:javascript
复制
Category.first.subtree.arrange_serializable

但这将返回所有DB属性,如created_atid

我希望使用活动模型序列化程序在不丢失树结构的情况下对输出进行整形。

代码语言:javascript
复制
class CategorySerializer < ActiveModel::Serializer
  # Children is the subtree provided by ancestry
  attributes :name, :x, :children
end

控制器

代码语言:javascript
复制
class CategoryController < ActionController::Base
  def index
    category = Category.first
    render :json => category
  end
end

上面的代码将只显示第一个子级别,而不显示子级的子级。感谢您的任何帮助

EN

回答 2

Stack Overflow用户

发布于 2015-11-12 20:10:00

为了使用排列,我们需要传递一个额外的参数给序列化程序,你可以这样做:

代码语言:javascript
复制
category.subtree.arrange_serializable do |parent, children|
  CategorySerializer.new(parent, scope: { children: children })
end

下面是如何在序列化器中获取该参数的方法:

代码语言:javascript
复制
class CategorySerializer < ActiveModel::Serializer
  attributes :id, :name, :order, :children

  def children
    scope.to_h[:children]
  end
end

您可能还想看看this test,以便更好地理解arrange_serializable是如何工作的。

票数 1
EN

Stack Overflow用户

发布于 2016-10-07 02:59:50

在AMS 10.x (主分支)中,我们可以这样支持外部参数:

代码语言:javascript
复制
class CategorySerializer < ActiveModel::Serializer
  attributes :id, :name, :order, :children

  def children
    instance_options[:children]
    # or instance_options[:children]&.as_json
  end
end

接下来,您可以简单地将子代传递给序列化程序:

代码语言:javascript
复制
category.subtree.arrange_serializable do |parent, children|
  CategorySerializer.new(parent, children: children)
end

代码语言:javascript
复制
category.subtree.arrange_serializable do |parent, children|
  ActiveModelSerializers::SerializableResource(parent, children: children)
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33670243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档