我有兩個類,Foo和Bar。 Foo has_many酒吧。 Bar實際上是幾個共享STI表的類的超類。as_json覆蓋as_json(:includes =>:association)
我想轉儲我的Foo記錄,包括其關聯的酒吧。要做到這一點,我打電話
Foo.all.to_json(:incude => :bars)
最初的問題是,我想能夠區分不同類型的酒吧類。 Rails通過Bar表中的類型列進行區分,但該列未包含在Ber記錄的json序列化中。
因此,我重寫Bar類中的to_json以包含type屬性。當我在Bar的一個實例上調用to_json時,我得到了新的結果,但是當我在Foo上調用to_json幷包含它的Bars時,我得到舊的to_json(即沒有包含type屬性)。
我已經放棄了這一點,並採用了不同的方法,但我仍然對這裏發生的事情感到好奇。也許我應該使用as_json而不是to_json?我仍然不明白這兩種方法之間的差異。
我重寫了我的問題。我想我迷惑了你。 Bar不是Foo的子類。這是一個關聯的類。 – CharlieMezak
重寫as_json是在Rails 3中完成的正確方法。如果as_json沒有正確調用,請參閱此錯誤報告:https://github.com/rails/rails/issues/576 – squarism
好的謝謝!我會繼續努力的。 – CharlieMezak