如何在ActiveModel: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

我已经尝试了一整天来找出解决方案,但我只是浪费了我的时间。谁能帮忙?

适应 ActiveModel::序列化程序文档:

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

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

authenticated_belongs_to :item, serializer: ItemOwnerSerializer if :condition_method

最新更新