inohilog

/var/log/inohiro

Railsアプリケーションにおけるマスタデータ

新規にRailsアプリケーションを書いているんですが、マスタデータの取り扱いをどうしようか悩みました。

  • RDBに入れておく
    • 学生の頃(Rails 2とか3のとき)は普通にこうしてた
    • テーブル作るのと、シードを用意して読み込ませないといけない
    • 無駄に問合せが発生するなと思ったけど、メモ化すればいい
  • AR::Enum を使う(RDBには入れない)
    • Rails 4.1以降なら使える
    • ただしフォームから選択させる、とかをやりたいときは一工夫が必要*
    • 複数値を持たせたいときは使えない気がする
  • 普通のクラスとして書く(AR::Baseを継承したクラスにしない。RDBには入れない)
    • 正直、項目が増えたり変更されたりする見込みがあまりないならば、RDBにおいておく必要はない?
    • 変更する・追加する・削除する場合はアプリケーションのデプロイが必要
    • RDB 直結(SQL)で分析とかするときにちょっと困りそう

どれがベストということもなく、用途に合わせて選ぶのがよい(という逃げ)、でいいんだろうか

*: Rails: ActiveRecordのenum要素をselectフォームでいい感じに表示する - Qiita