我目前需要在序列化程序中访问params,但不确定这里最好的方法是什么。
基本上我只是访问params散列内的时区来响应转换到该时区的模型的时间属性。
答案 0 :(得分:1)
我创建了一个简单的struct对象,允许访问当前用户和params哈希,如下所示:
SerializerScope = Struct.new(:current_resource_owner, :params)
我将该声明放在初始化器中,然后在主API控制器中使用它:
def default_serializer_options
{
scope: SerializerScope.new(current_resource_owner, params)
}
end
在我的序列化工具中,我可以访问scope.current_resource_owner
和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)
显然,请确保当您从序列化器内部访问params时,某些常见的参数如:id可能会从控制器更改为控制器。
这都是使用AMS~> v0.8.0。