我正在使用名为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
。
答案 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,但是我想它会起作用。