Передача JSON-API в класс сериализатора - PullRequest
0 голосов
/ 11 декабря 2018

Я использую камень под названием 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 голосов
/ 11 декабря 2018

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, у меня нетпопробовал это с вашим драгоценным камнем, но я думаю, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...