Rails序列化继承人类

时间:2014-08-27 13:34:33

标签: ruby-on-rails json inheritance serialization attributes

如何指定我想序列化从抽象类继承的类的其他属性? (我正在使用ActiveModel :: Serializer)

编辑:我需要在序列化程序中保留关联/引用,而不仅仅是属性

class AbstractClass
    [attributes]
    **has_one :reference** # Added after Edit
end

class Foo < AbstractClass
    field :some_special_foo_field
end

class Bar < AbstractClass
    field :some_other_bar_field
end

Class Baz
   has_many :abstract_class
end

我想要一个看起来像

的JSON
{:baz => [
    { id => "foo_1_ID",
      some_special_foo_field => "something"
    }, {
      id => "bar_1_ID,
      some_other_bar_field => "Somewhere"
}]

我正在控制器的某个地方:

@bazz = Baz.all
respond_to do |format|
    format.json { render json: @bazz}
end

class BazSerializer < ActiveModel::Serializer
    attributes [what I need]
    has_many :constraints, serializer: AbstractClassShortSerializer, embed: :objects
end

class AbstractClassSerializer
    **has_one :reference, serializer: SomethingSerializer, embed: :objects** # Added after Edit
    attributes :[attributes I want to keep]
end

现在问题:取决于@bazz中的对象是Foo还是Bar,我想在我的JSON中使用它们的特殊属性,但我目前无法使用此代码

这个问题与此Simulating constraints and sub-constraints

有些联系

1 个答案:

答案 0 :(得分:1)

简单说明:

  • 到一个用于食品和葡萄酒系列化器的系列化器
  • 请勿在{{1​​}}序列化工具
  • 中使用has_many

这样做:

baz