我试图允许API请求指定要在对象上返回的字段。我可以只使用指定的字段来检索对象,但是当它被序列化时,它将引发错误:

ActiveModel::MissingAttributeError (missing attribute: x)

如何使用ActiveModel::Serializer实现此功能,并且有可能吗?

最佳答案

我在寻找一个好的方法来从json响应中删除可选字段时发现了这个问题。

gem active_model_serializers确实有解决方案。您只需要在序列化程序声明中将条件传递给attribute方法。

class MySelectiveSerializer < ActiveModel::Serializer
  attributes :id, :anything
  attribute :something, if: -> { object.something.present? }
end

也许3年前没有这样的解决方案,但现在可以使用。 :)

干杯。

关于ruby-on-rails - 如何在运行时使ActiveModel::Serializer属性为可选?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32487213/

10-11 23:27