Rails Model.to_jsonでデータを加工して吐き出す


例えばDBに,AAA,BBB,CCCのように先頭のカンマが不要なデータが入っていて、対象をトリムしてjson出力したい場合などなど。

Model側でtrimするメソッドを定義

インスタンスメソッドで加工したいカラムに対してメソッドを定義する

class FooModel < ApplicationRecord
  def trim_ comma
    comma_column[1..-1]
  end
end
Controller側でmethodsで指定

to_jsonメソッド内でmethodsにシンボルを与えればよい

FooModel.all.to_json( methods:[:trim_comma] )
FooModel.first.to_json( methods:[:trim_comma] )

とするとjsonのキーにtrim_commaというキーが生成され先頭カンマが削除されたデータが出力される