active_model_serializer多对多无限循环

时间:2013-05-09 20:17:40

标签: ruby-on-rails active-model-serializers

ruby​​的active_model_serializer(AMS)是否能够管理多对多的关系?

例如:

class ProjectSerializer < ActiveModel::Serializer
    has_many :resources
end

class ResourcesSerializer < ActiveModel::Serializer
    has_many :projects
end

我的'堆栈级太深'错误。

在AMS github repo:https://github.com/rails-api/active_model_serializers/issues/211

上引用此问题

基于之前的链接,我认为现在还不支持,但欢迎任何优雅的解决方法。

2 个答案:

答案 0 :(得分:0)

你得到错误“堆栈级别太深”的原因是它将是一个无限循环。

每个资源都会列出它拥有的项目,而这些项目又列出了他们拥有的资源,这将再次列出项目,等等。

您可以使用has_many,但不能同时使用两者。

答案 1 :(得分:0)

您需要在两种情况下都使用:has_and_belongs_to_many