Как вызвать объект внутри ActiveModel: Serializer - PullRequest
0 голосов
/ 17 октября 2018

Я использую гем Active Model Serializer для сериализации объекта json.

Я хотел бы открыть поле A, если значение из поля B соответствует условию.

Но поле A являетсяличная информация.Таким образом, предыдущий разработчик пишет специальный вызов функции «authenticated_belongs_to» и использует его в ActiveModel: Serializer

Проблема в том, что я не могу напрямую вызвать объект, чтобы получить поле B

authenticated_belongs_to :item, serializer: ItemOwnerSerializer if object.B

над кодомвыдает мне ошибку, потому что неопределенный объект

Я также пытался получить значение объекта с помощью метода

authenticated_belongs_to :item, serializer: ItemOwnerSerializer if condition_method

def condition_method
  object.B
end

Но приведенный выше код не работает, потому что выдает ошибку неизвестного условия_метод

Я целый день пытался найти решение, но я просто следил за своим временем.Может ли кто-нибудь помочь?

1 Ответ

0 голосов
/ 17 октября 2018

В соответствии с ActiveModel :: Serializer документация :

Параметр if или unless может сделать атрибут условным.Он принимает символ имени метода в сериализаторе или лямбда-литерал.

Так что вы должны изменить код на:

authenticated_belongs_to :item, serializer: ItemOwnerSerializer if :condition_method
...