ActiveRecordのモデルに対してto_hashを出来るようにする。

モデルの中身をJSONとして出力する前段階として、
モデルの中身をハッシュとして扱いたかったのですが、標準でハッシュに変換する方法が見つかりませんでした。
そのため、to_hash関数を自分で追加することにしました。

モデルクラスに以下のコードを追加:

def to_hash
    ActiveSupport::JSON.decode(self.to_json)
end

これで、 「モデルオブジェクト.to_hash」 でいつでもハッシュ化できます。
ただこれだと、関連しているテーブルを追いかけてくれるわけではないので、まだ少し不便だったりもします。

もっと良い方法もあるかもしれません。

追記 (12/03/02):
こっちのほうが良さそうです。(情報提供ありがとうございます!)

def to_hash
  Hash[*self.map{ |i| [i.id, i]}.flatten]
end
Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ