在 Ruby 中封送对象之前修改对象
Modify an object before marshaling it in Ruby
我有一个包含我想要编组的敏感数据的对象(使用 Marshal
)没有 敏感数据。
我想说:
def _dump(*args)
# Clean-up sensitive data
super
end
但这会产生 'no superclass method' 错误。有没有一种方法可以让我的对象按照我想要的方式响应 Marshal.dump
,同时使用默认实现?
我希望 Marshal.dump(my_obj)
开箱即用,不需要 API 消费者记住调用不同的方法。
可能是_dump
没有超类方法。如果它是在你的对象上定义的,它就会被调用。如果不是,则使用默认处理程序。
您可能想要 clone
您的对象并删除敏感字段,将其作为散列返回到 _dump
函数中,然后在 _load
方法中撤消它。
您还可以阅读 the documentation on Marshal,其中描述了推荐的方法。
我有一个包含我想要编组的敏感数据的对象(使用 Marshal
)没有 敏感数据。
我想说:
def _dump(*args)
# Clean-up sensitive data
super
end
但这会产生 'no superclass method' 错误。有没有一种方法可以让我的对象按照我想要的方式响应 Marshal.dump
,同时使用默认实现?
我希望 Marshal.dump(my_obj)
开箱即用,不需要 API 消费者记住调用不同的方法。
可能是_dump
没有超类方法。如果它是在你的对象上定义的,它就会被调用。如果不是,则使用默认处理程序。
您可能想要 clone
您的对象并删除敏感字段,将其作为散列返回到 _dump
函数中,然后在 _load
方法中撤消它。
您还可以阅读 the documentation on Marshal,其中描述了推荐的方法。