我正在使用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会出现错误
我整天都在尝试找出解决方案,但我只是浪费时间。有人可以帮忙吗?
答案 0 :(得分:0)
根据ActiveModel::Serializer documentation:
一个
if
或unless
选项可以使属性成为条件。需要一个 序列化器上的方法名称或lambda文字的符号。
因此,您应该将代码更改为:
authenticated_belongs_to :item, serializer: ItemOwnerSerializer if :condition_method