我正在编写包含has_one :source
的序列化程序。 source
可以是多种不同类型。当source
为Foo
overriding the association methods时,我正在尝试缩小JSON。我试过这个:
def source
return super unless source_type == 'Foo'
render json: source, serializer: LimitedFooSerializer
end
然后我得到没有超类方法`source'。
然后我尝试了:
def source
render json: source unless source_type == 'Foo'
render json: source, serializer: LimitedFooSerializer
end
但错误堆栈级别太深;大概这是一次无限递归。
我如何有条件地覆盖关联方法?
答案 0 :(得分:1)
直接调用序列化程序:
def source
if source_type == 'Foo'
FooSerializer::LimitedFooSerializer.new(object.source)
else
object.source
end
end
我必须使用object.source
而不是source
来避免递归。