2012-10-16 2 views
1

포함 방법에 대한 옵션을 지정 to_json 관계를 포럼 토픽 (belongs_to :forum_topic)과 나는 내 json에이 ForumTopic을 포함 시켜서 결국 {..., "last_post": {..., "forum_topic": {...} ...} ...}. 이것을 어떻게 할 수 있습니까?액티브 내가보기에 다음 to_json있어

답변

1

일반적으로 모델에서 그런 종류의 선언을 유지하는 것이 좋습니다. 모델에서 as_json 메소드를 대체 할 수 있습니다. 이 방법을 사용하면 전체 객체 그래프에 대한 직렬화 동작을 제어 할 수 있으며이 작업에 대한 단위 테스트를 작성할 수 있습니다.

이 예제에서는 @forums 변수가 Forum이라는 모델을 참조한다고 추측합니다. 잘못된 것이라면 여전히 아이디어를 얻습니다.

class Forum 
    ... 
    def as_json(options={}) 
     super(methods: [:topic_count, :last_post]) 
    end 
end 
class ForumPost 
    ... 
    def as_json(options={}) 
     super(methods: [:forum_topic]) 
    end 
end 
+0

이유 나는 모델을 사용하지 않을 때마다 to_json을 사용할 필요가 없기 때문에이 모든 데이터를 포함하고 싶습니다. 이 예제에서는 인쇄 된 json이 백본 컬렉션을 부트 스트랩하는 데 사용되기 때문에 특별히 많은 양의 데이터가 포함되어 있습니다. ForumPost 및 Forum은이보기와 별개로 json으로 변환되므로 매번이 데이터를 포함시키지 않아도됩니다. – Tomdarkness

+0

당신은 내가 아직 사용하지 않는 한 호세 valim의 활성 모델 시리얼의 https://github.com/josevalim/active_model_serializers에서 볼 수도 있지만, 다른 목적 serilization 다른 종류의 관리를위한 올바른 접근 방식처럼 보인다. to_json 또는 as_json에 대한 이러한 미친 해시를 만드는 것은 정말 끔찍한 일이며 이는 좋은 접근 방법 인 것 같습니다. – joshuacronemeyer