たとえば、TopicというモデルがSTI(Single Table Inheritance)の親モデルだとして、その下に、NewsやReleaseがあったとする。
そのTopicをJSONに変換しようとすると、STIのtype
属性が削除される。これはto_json
がtype
を削除してJSON文字列を作ってしまうから。
これを回避するにはmethods
オプションを使用。
pry(main)> Topic.first.to_json
=> {"id":1,"uri":"http:..."}
pry(main)> Topic.first.to_json(methods[:type])
=> {"id":1,"type":"News","uri":"http:..."}