2016-03-30 20 views
1

has_one :sourceを含むシリアライザを作成しています。 sourceにはさまざまな種類があります。私は、sourceFoooverriding the association methodsのときにJSONを小さくしようとしています。 アクティブモデルシリアライザの関連付けメソッドを条件付きでオーバーライド

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

しかし、その後、私は 何のスーパークラスのメソッド `ソース」を取得していない:私はこれを試してみました。

は、次に私が試した:

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

しかしエラーがスタックレベルが深すぎていると、おそらくそれは無限回帰です。

どうすればを条件付きでにすることができますか?直接働いシリアライザ呼び出す

答えて

1

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

私は再帰を避けるためにsourceの代わりにobject.sourceを使用する必要がありました。

関連する問題