2016-03-30 23 views
1

has_one :source ürününü içeren bir serializer yazıyorum. source bir dizi farklı türde olabilir. source, overriding the association methods tarafından Foo olduğunda JSON'u daha küçük yapmaya çalışıyorum. Bu çalıştı:Koşullu olarak bir etkin model serializer ilişkilendirme yöntemini geçersiz kılma

def source 
    return super unless source_type == 'Foo' 
    render json: source, serializer: LimitedFooSerializer 
end 

Ama sonra hiçbir üst sınıf yöntemi `kaynak’ olsun.

def source 
    render json: source unless source_type == 'Foo' 
    render json: source, serializer: LimitedFooSerializer 
end 

Ama bu hatalar yığın seviyesi çok derin;:

Sonra çalıştı Muhtemelen sonsuz bir özyineleme.

koşullu olarak ilişkilendirme yöntemini nasıl geçersiz kılar? doğrudan seri hale çağrılması

cevap

1

çalıştı:

def source 
    if source_type == 'Foo' 
    FooSerializer::LimitedFooSerializer.new(object.source) 
    else 
    object.source 
    end 
end 

Ben Özyinelemeyi önlemek için object.source yerine source kullanmak zorunda kaldı.

İlgili konular