1

我们有多种类型的“小部件”,可以在组中使用,并且在 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 => true 添加到序列化程序。例如:

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

  has_many :widgets, :polymorphic => true
end

我似乎得到了一个递归循环,它以SystemStackError (stack level too deep)结束。

我在这里错过了一个技巧,还是这只是一些还不能完成的事情?

谢谢,丹

4

1 回答 1

0

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

has_many :widgets

还要确保您的每个小部件类型都有为它们定义的序列化程序。

于 2013-01-17T03:10:52.800 回答