ENGINEERING&RUN

26.2マイルを走る僕の旅

ActiveHashで静的データの格納がべんりべんり!

開発をしていると固定のデータ値を持たせたいことがよくある。 例えば固定の商品カテゴリー名、国名など。
つまりデータベースの更新がないもの。

あえてテーブルを作るほどでもない。
そんなときに使えるのがActiveHash。

github.com

ActiveHashとは

静的データをhashで持たせ、ActiveRecordのように使うことができる。 今までseedデータなどでマスターデータなどを持たせる、言語ファイルに持たせるなどをしてきたことをシンプルに実装できる。

使い方

まずgemをインストールする。
gem 'active_hash'bundle installすればOK。

そしてmodelでActiveHashで定義する。

class ReserveStatus < ActiveHash::Base
  self.data = [
    {id: 1, name: '未予約'},
    {id: 2, name: '予約済み'},
    {id: 3, name: '返送待ち'},
    {id: 4, name: 'キャンセル'},
  ]
end

self.dataでハッシュを入れる。 これで準備は完了。
ActiveRecordと同じようなことができる。

全件取得はこう。 ReserveStatus.all
当然findやwhereなどActiveRecordメソッドも使える。
しかもbelongs_tohas_manyなどの関連付けもできる。

これはべんりべんり!