我正在使用活动模型序列化程序 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::序列化程序文档:
if
或unless
选项可以使属性成为条件。它需要一个 序列化程序上的方法名称或 lambda 文本的符号。
因此,您应该将代码更改为:
authenticated_belongs_to :item, serializer: ItemOwnerSerializer if :condition_method