LoginSignup
5

More than 5 years have passed since last update.

(俺得)Railsにおいて 設定っぽいものをDBに入れるか、yamlに書くか考えた (加筆修正の可能性大)

Posted at

動機

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5