我目前需要访问序列化程序中的参数,但不确定这里最好的方法是什么。
基本上我只是访问参数哈希内的时区,以响应转换为该时区的模型时间属性。
我目前需要访问序列化程序中的参数,但不确定这里最好的方法是什么。
基本上我只是访问参数哈希内的时区,以响应转换为该时区的模型时间属性。
我创建了一个简单的结构对象来允许访问当前用户和参数哈希,如下所示:
SerializerScope = Struct.new(:current_resource_owner, :params)
我将该声明放在初始化程序中,然后在我的主 API 控制器中使用它:
def default_serializer_options
{
scope: SerializerScope.new(current_resource_owner, params)
}
end
在我的序列化程序中,我可以访问scope.current_resource_owner
and scope.params
。
由于您需要在测试中正确存根,因此测试变得更加繁琐:
serializer_scope = SerializerScope.new
serializer_scope.current_resource_owner = # a user
serializer_scope.params = {} # override and re-stub within controller action tests
MySerializer.any_instance.stub(scope: serializer_scope)
显然,请确保当您从序列化程序内部访问参数时,某些常见参数(如 :id)可能会从控制器更改为控制器。
这都是使用 AMS ~> v0.8.0。