2

에 대한 ActiveModel :: 시리얼의 인스턴스를 가져옵니다,이 작업을 수행 할 수 있습니다임의 (유형 알 수없는) 모델 인스턴스

render :json => {:foo => "bar", :model => ProjectSerializer.new(my_project).as_json} 

하지만 내 시나리오에서는 모델 인스턴스의 유형을 미리 알지 못하므로 올바른 직렬기를 다형성으로 결정해야합니다. active_model_serializer 코드를 파고 들자면, 내부적으로 ActiveModel::Serializer.serializer_for을 사용하지만, 컨트롤러에서 호출 할 수없는 것을 알 수 있습니다. 나는 이런 식으로 작동하게 할 수있다 :

begin 
    serializer = Object.const_get "#{model.name}Serializer" 
    object_hash = serializer.new(model).as_json 
rescue NameError 
    object_hash = model.as_json 
end 

이 작업은 잘되지만, 나는이 코드를 직렬화 기의 세부 사항과 관련이 없다. 임의의 모델에 대한 시리얼 라이저를 찾는 "올바른"방법이 있습니까?

답변

2

시도 :

model_instance.active_model_serializer 

이 문서화되어 있지 않습니다 이유는 확실하지 않다하지만 코드이며 작동합니다.

+0

그게 내가 찾고있는 것입니다. 고맙습니다. – gwcoffey