序列化程序类中的JSON-API传递

时间:2018-12-10 22:58:17

标签: ruby-on-rails

我正在使用名为jsonapi-rb的宝石

我有一个最终会调用的控制器

render jsonapi: some_obj,
class: SomeSerializer,
include: :items

SomeSerializer具有一种类似的has_many关系

has_many :items, class: ItemSerializer do
  linkage always: true
end

有没有一种方法可以将ItemSerializer作为变量传递,以便可以根据特定条件进行更改。

例如,如果满足某些条件,我可能想使用ItemSerializerII

1 个答案:

答案 0 :(得分:0)

has_many是在类初始化时执行的,因此不会被重新执行。

您可以在运行时进行此操作

SomeSerializer中创建一个方法...

class self.build_items_association(klass)
  has_many :items, class: klass do
    linkage always: true
  end
end

那你就可以...

SomeSerializer.build_items_association(ItemSerializer)
render jsonapi: some_obj,
class: SomeSerializer,
inculde: :items

或者...

SomeSerializer.build_items_association(ItemSerializerII)
render jsonapi: some_obj,
class: SomeSerializer,
inculde: :items

这可以与香草ActiveModel一起使用,我还没有尝试过使用您的gem,但是我想它会起作用。