ruby-on-rails - 如何在 ActiveModel:Serializer 中调用对象
问题描述
我正在使用 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
但是上面的代码不起作用,因为它给了我一个错误 unknowed condition_method
我已经尝试了一整天来找出解决方案,但我只是浪费我的时间。有人可以帮忙吗?
解决方案
if
or选项可以unless
使属性成为条件属性。它采用序列化程序上的方法名称符号或 lambda 文字。
因此,您应该将代码更改为:
authenticated_belongs_to :item, serializer: ItemOwnerSerializer if :condition_method
推荐阅读
- c# - 使用异步代码时使用 [ThreadStaticAttribute] 缓存 StringBuilder 是否安全?
- javascript - 访问未授予或过期 GMAIL API 和 Oauth2 / 如何使用 GMAIL API 和 GSuite 域设置电子邮件签名
- python - 带有生成器表达式的 Python for 循环对于已经存在的字典是否值得?
- python - 向量化 Pandas tqdm progress_apply 函数
- flutter - 如何将方形图像放入圆形装饰盒 FLUTTER
- angular - Angular 库项目的路径别名不工作
- c# - 将 HTML 表单转换为 ASP.Net MVC Razor @Html.BeginForm
- angular - 当我使用 Drilldown(Highcharts) 时,我的构建 --prod 在角度 8 中变得非常大
- google-cloud-platform - 如何在 google 计算引擎和 google bigquery 之间创建专用网络?
- c - 为什么要在这个 flex 程序上过早地使用 eof?