我们有多种类型的“小部件”,可以在组中使用,并且在 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)结束。
我在这里错过了一个技巧,还是这只是一些还不能完成的事情?
谢谢,丹