1

グループで使用できる複数のタイプの「ウィジェット」があり、レール内では、タイプに関係なく、すべてのウィジェットを返すポリモーフィックな関係があります。

たとえば、@ 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(スタックレベルが深すぎる)で終わる再帰ループが発生するようです。

私はここでトリックを逃していますか、それともこれはまだできないことですか?

ありがとう、ダン

4

1 に答える 1

0

ポリモーフィック宣言なしで宣言しようとしましたか?

has_many :widgets

また、各ウィジェット タイプにシリアライザが定義されていることを確認してください。

于 2013-01-17T03:10:52.800 に答える