我们有多种类型的'小部件'可以在组中使用,在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(堆栈级别太深)结束。
我在这里错过了一个技巧,或者这只是一件无法完成的事情?
谢谢, 丹
答案 0 :(得分:0)
您是否尝试过在没有多态声明的情况下声明它?
has_many :widgets
还要确保每个窗口小部件类型都有为其定义的序列化程序。