我想手动序列化一个集合以进行测试。我试过这个:
JSONAPI::ResourceSerializer.new(PostResource).
serialize_to_hash(PostResource.new(Post.all))
这不起作用。您似乎只能在此处序列化单个资源。如何返回所有帖子的序列化集合?
答案 0 :(得分:3)
我正在尝试同样的事情 - 但这是不可能的。 JSONAPI :: Resource没有任何帮助器可以轻松地将Relation对象或记录数组转换为JSONAPI :: Resource实例,因此您无法像这样传递集合。
serialize_to_hash需要JSONAPI :: Resource数组,所以你必须做一些可怕的事情:
result = []
Post.all.each do |post|
result << PostResource.new(post)
end
JSONAPI::ResourceSerializer.new(PostResource).serialize_to_hash(result)
JSONAPI :: Resources期望JSONAPI本身应该足够,因此不需要像index这样的方法的实现 - gem将自己处理它而不需要手动序列化。但确实如此,我可以想象一些场景,我希望能够手工序列化记录集合,所以应该有一些简单的方法来做到这一点......不幸的是,看起来没有简单的方法现在
更新: 我自己也有了一些问题所以我在这里问过宝石的创造者:https://github.com/cerebris/jsonapi-resources/issues/460
答案 1 :(得分:0)
基于JSONAPI资源功能手动序列化数据的另一种方法是使用jsonapi-utils gem:
使用jsonapi_serialize
方法:
class API::V1::UsersController < API::V1::BaseController
def index
users = User.all
render json: jsonapi_serialize(users)
end
end
或高级jsonapi_render
方法:
class API::V1::UsersController < API::V1::BaseController
def index
jsonapi_render json: User.all
end
end
希望它对你有用: - )
答案 2 :(得分:0)
如果您使用ActiveModelSerializers(https://github.com/rails-api/active_model_serializers)
尝试做这样的帮助:
V_err
您可以将此模式用于一个资源或多个资源。 在你的情况下,它将是:
Km_err