動機
Railsアプリケーション作ってて、検索、表示などに使うけれども、
滅多に変更しないデータをモデル作ってDBに保存するか、どうしようかと考えた。
こんなデータについて考えた。
- 自治体一覧 都道府県、市区町村など。名称とコードを保存。日本全国で1800件くらい。
- 公開判定 有効無効などの設定を行う。
- メタ要素 レコード対象に付与する情報
これらについて、
自治体一覧は、名称と自治体コードといった複数のカラムが必要になるほか、名称やコードによる検索を行うことが多いのでDB。
レコードステータスは、「現在有効なレコードのみ取得対象とする」などの使い方が中心なので、
プログラム上の判定処理は数値で行い、ビューで表示する際には人にとって分かりやすい文字で表せば良い。
こんなハッシュで書きあらわすことができる。
{ 0 => "無効", 1 => "有効" , -1 => "異常" }
そして、このくらいの単純な構造のハッシュなら、yamlファイルに記載することも容易。
ステータス記述の例
release:
0: 無効
1: 有効
-1: 異常
こんな感じで、読み込んであげればOK
メタ情報の扱いはまちまちですが、上記のステータスみたいに書けるのであれば
yamlにしたほうがよさそう。
ハッシュ形式で持っているデータを、プルダウンメニューなどで使用する。
上記のような項目を持つものを、フォーム内のプルダウンメニューで使いたい場合
STATUS["release"]
の中に「ステータス記述の例」のような数値:文言
のような形式のデータが保存されていると仮定した場合、POSTするときの値に数値を、ラベルに文言を使いたい場合は、下記のように記載。
記載例```
<%= f.select :status, STATUS["release"].invert %>
参考 Hash::invert