我正在使用一个名为jsonapi-rb的宝石
我有一个控制器,它最终会调用
render jsonapi: some_obj,
class: SomeSerializer,
include: :itemsSomeSerializer有一个has_many关系,如下所示
has_many :items, class: ItemSerializer do
linkage always: true
end是否有一种方法可以将ItemSerializer作为变量传递,以便可以根据特定条件更改它。
例如,如果满足某些条件,我可能希望使用ItemSerializerII。
发布于 2018-12-11 01:43:19
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,我还没有尝试过你的宝石,但我可以想象它会起作用。
https://stackoverflow.com/questions/53714964
复制相似问题