我们可以使用与Ember数据的多态关系吗?

时间:2012-11-05 17:38:05

标签: ember.js active-model-serializers

我们有多种类型的'小部件'可以在组中使用,在rails中我们有多态关系可以返回所有小部件,无论其类型如何。

例如,我们可以调用@ group.widgets来返回所有不同类型的小部件,无论可能使用的是什么。

class Group < ActiveRecord::Base
  has_many :group_widgets

  def widgets
    group_widgets.map { |m| m.widget }
  end
end

class GroupWidget < ActiveRecord::Base
  belongs_to :group
  belongs_to :widget, polymorphic: true, dependent: :destroy
end

如果我添加polymorphic =&gt;对序列化器来说是真的。例如:

class GroupSerializer < ActiveModel::Serializer
  attributes :id,
             :parent_id,
             :title,
             :group_type

  has_many :widgets, :polymorphic => true
end

我似乎得到一个递归循环,以 SystemStackError(堆栈级别太深)结束。

我在这里错过了一个技巧,或者这只是一件无法完成的事情?

谢谢, 丹

1 个答案:

答案 0 :(得分:0)

您是否尝试过在没有多态声明的情况下声明它?

has_many :widgets

还要确保每个窗口小部件类型都有为其定义的序列化程序。