Nat*_*nna 5 ruby ruby-on-rails active-model-serializers
我试图允许API请求指定要在对象上返回的字段.我只能使用指定的字段检索对象,但是当它被序列化时,它会抛出一个错误:
ActiveModel::MissingAttributeError (missing attribute: x)
Run Code Online (Sandbox Code Playgroud)
如何实现此功能ActiveModel::Serializer并且可能吗?
我在寻找从 json 响应中删除可选字段的好方法时发现了这个问题。
gemactive_model_serializers确实有一个解决方案。您只需要将条件传递给attribute序列化程序声明中的方法。
class MySelectiveSerializer < ActiveModel::Serializer
attributes :id, :anything
attribute :something, if: -> { object.something.present? }
end
Run Code Online (Sandbox Code Playgroud)
也许 3 年前,这样的解决方案并不存在,但现在可以使用了。:)
干杯。
您可以从序列化程序中删除属性,但它们应该存在。
class SomeSerializer < ActiveModel::Serializer
attributes :something
def attributes
super.except(:something) if something
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2684 次 |
| 最近记录: |