ActiveHashで静的データの格納がべんりべんり!
開発をしていると固定のデータ値を持たせたいことがよくある。
例えば固定の商品カテゴリー名、国名など。
つまりデータベースの更新がないもの。
あえてテーブルを作るほどでもない。
そんなときに使えるのがActiveHash。
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_to
やhas_many
などの関連付けもできる。
これはべんりべんり!