두 가지 Foo와 Bar 클래스가 있습니다. Foo has_many Bars. Bar는 실제로 STI 테이블을 공유하는 여러 클래스의 수퍼 클래스입니다.as_json에 대한 as_json (: includes => : association)을 대체합니다.
관련 바를 포함하여 내 Foo 레코드의 덤프를 만들고 싶습니다. 이를 위해
Foo.all.to_json(:incude => :bars)
초기 문제는 다양한 종류의 Bar 클래스를 구별 할 수 있기를 바랍니다. Rails는 Bar 테이블의 type 열을 통해 이러한 구분을하지만 Ber 레코드의 json serialization에는이 열이 포함되지 않습니다.
그래서 bar 속성에서 to_json을 오버라이드하여 type 속성을 포함 시켰습니다. Bar의 인스턴스에서 to_json을 호출하면 새 결과가 표시되지만 Foo에서 to_json을 호출하고 Bars를 포함하면 이전 to_json (예 : type 특성이 포함되지 않음)이 표시됩니다.
나는이 문제를 포기하고 다른 접근법을 사용하려고하지만 나는 아직도 여기서 무슨 일이 일어나고 있는지 궁금해. 어쩌면 내가 to_json 대신에 as_json을 사용해야 할까? 나는 아직도이 두 가지 방법의 차이를 이해하지 못한다.
제 질문을 다시 작성했습니다. 너 혼란스러워. Bar는 Foo의 하위 클래스가 아닙니다. 그것은 관련된 클래스입니다. – CharlieMezak
레일즈 3에서 as_json을 오버라이드하는 것이 적절한 방법입니다. as_json이 올바르게 호출되지 않으면 다음 버그 보고서를 참조하십시오. https://github.com/rails/rails/issues/576 – squarism
ok thanks! 나는 계속 지킬거야. – CharlieMezak