2013-08-29 2 views
1

나는 활성 모델 시리얼에 대한 README보고이 예를 참조하고 있습니다 :활성 모델 시리얼 및 여러 메타 값

render json: @posts, serializer: CustomArraySerializer, meta: {total: 10}, meta_key: 'meta_object' 

... 

{ 
    "meta_object": { "total": 10 }, 
    "posts": [ 
    { "title": "Post 1", "body": "Hello!" }, 
    { "title": "Post 2", "body": "Goodbye!" } 
    ] 
} 

을하지만 난 출력 할 수 싶습니다

{ 
    "meta_object": { "total": 10 }, 
    "sort":[2,1], 
    "posts": [ 
    { "title": "Post 1", "body": "Hello!" }, 
    { "title": "Post 2", "body": "Goodbye!" } 
    ] 
} 

나는 두 개의 메타 객체를 가져야한다고 생각합니다. 이것이 가능한가? 나는 그것을 어떻게 할 것이냐?

답변

0

정상적인 해결책은 "메타"키 ("메타"는 모델이 아닌 응답 정보의 포괄적 인 위치) 아래에 "정렬"키를 중첩하는 것입니다. 그래서 당신이 사용하는 것 :

render json: @posts, serializer: CustomArraySerializer, meta: { total: 10, sort: [2, 1] }, meta_key: 'meta_object' 
... 
{ 
    "meta_object": { 
    "total": 10, 
    "sort": [2, 1] 
    }, 
    "posts": [ 
    { "title": "Post 1", "body": "Hello!" }, 
    { "title": "Post 2", "body": "Goodbye!" } 
    ] 
} 

을 요구 절대적 루트에 표시하기 위해 "종류"키가 필요한 경우, 수동으로 작업을 수행 할 수 있습니다

response_json = CustomArraySerializer.new(@posts).as_json.merge { sort: [2, 1] } 
render json: response_json, meta: { total: 10 }, meta_key: 'meta_object' 
... 
{ 
    "meta_object": { 
    "total": 10 
    }, 
    "sort": [2, 1], 
    "posts": [ 
    { "title": "Post 1", "body": "Hello!" }, 
    { "title": "Post 2", "body": "Goodbye!" } 
    ] 
} 
관련 문제