【问题标题】:ActiveModel::Serializers and Ember Data - Correctly modeling my serializer to be used with Ember DataActiveModel::Serializers and Ember Data - 正确建模我的序列化器以与 Ember 数据一起使用
【发布时间】:2014-07-12 03:13:00
【问题描述】:

在我的应用程序中,一个帖子 has_many 评论和一个评论 belongs_to 帖子(通过我的序列化程序中的 has_one 关系建模)。

由于每当我尝试在我的序列化程序中对这两种关系进行建模时都会收到Stack Level Too Deep 错误消息,我想知道是否应该保留has_many 关联或has_one 关联。

我还有一个嵌入 :ids 并旁加载数据的初始化程序。

感谢您的任何帮助。我发誓我用谷歌搜索了这个!

【问题讨论】:

    标签: ember.js ember-data active-model-serializers


    【解决方案1】:

    对于这些关系,您的序列化程序应如下所示:

    class PostSerializer < ActiveModel::Serializer
      embed :ids
    
      attributes :id # add other attributes here
    
      has_many :comments
    end
    
    class CommentSerializer < ActiveModel::Serializer
      embed :ids
    
      attributes :id # add other attributes here
    
      has_one :post
    end
    

    如果您遇到堆栈级别太深的错误,很可能是因为未嵌入 ID。如果没有嵌入 id,它将尝试将 cmets 嵌入帖子中,并且对于每条评论,再次嵌入帖子,然后再次嵌入 cmets,以此类推无限循环。

    您还应该确保在您的 ember 应用中使用 DS.ActiveModelSerializerDS.ActiveModelAdapter

    【讨论】:

    • id 是嵌入的。 AMS gem 现在建议您有一个设置 config.embed = :idsconfig.embed_in_root = true 的初始化程序。 Ember 文档在这方面并没有太大帮助。我最终决定保持我的has_many 关系并终止has_one 关系。 EmberData 似乎正在接受它。
    猜你喜欢
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多