如何在ActiveModel:Serializer中调用对象

时间:2018-10-17 00:41:37

标签: ruby-on-rails active-model-serializers

我正在使用Active Model Serializer gem来序列化json对象。

如果字段B中的值与条件匹配,我想显示字段A。

但是字段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

但是上面的代码行不通,因为它使我不知道condition_method会出现错误

我整天都在尝试找出解决方案,但我只是浪费时间。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

根据ActiveModel::Serializer documentation

  

一个ifunless选项可以使属性成为条件。需要一个   序列化器上的方法名称或lambda文字的符号。

因此,您应该将代码更改为:

authenticated_belongs_to :item, serializer: ItemOwnerSerializer if :condition_method