Railsでチーム共通の定数を管理する
システムを作成していると、開発チームで共通の定数などを利用したいことがあると思います。
各画面共通の値やパラメーター等を共通で利用できれば、「あの画面では”1”の値が印刷済なのに、こっちの画面では”1”の値が印刷済み」になっているとかいう状態を防ぐことができます。
もちろん、DBから値を取ってくるということもできますが、「チリも積もれば山となる」極力DBへ負荷を避けるという利点もありますね:start:
コンスト用のファイルを用意
config/initializer/constants.rbに次のようなファイルを用意します。
#constants.rb
#サーバーサイドを通さず、クライアントサイド側で利用したい定数は別途jsファイルなどにまとめましょう
module CommonConst
## クライアント名
CLIENT_NAME = "○○社総合人事システム"
## 業務区分
GYOMU_KBN = {
"1" => "給与管理",
"2" => "庶務事務管理",
"3" => "勤怠管理"
}.freeze
end
呼び出し方
例えば、viewファイルで次のように呼び出すことができます。
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbarEexample">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<!-- ↓ここ共通定数の呼び出し -->
<a class="navbar-brand" href="/"><%= CommonConst::CLIENT_NAME %>総合人事システム</a>
</div>
<div class="collapse navbar-collapse" id="navbarEexample">
<ul class="nav navbar-nav">
<li class="active"><a href="#">メニューA</a></li>
</ul>
</div>
</div>
</nav>
また、共通定数を利用した、セレクトボックスやラジオボタンの作成など、フォームコントロールを作成することもできます。
<h1 class="text-center">チームで決まったコンストを呼び出そう</h1>
<div class="form-group">
<div>
<%= label_tag '業務区分',nil,class:"label label-default" %>
<%= select_tag('select_gyomu',options_for_select((CommonConst::GYOMU_KBN.invert),class:'option form-control',selected:"1"),include_blank:true)%>
</div>
</div>
↓が呼び出し結果の画像です。
ナビゲーションバーの、
「○○社総合人事システム」と、「給与管理」という項目が出ているセレクトボックスが共通定数から利用しています。(値は適当です)
このように、Railsでも結構簡単に、定数を利用できます。
(とはいえ、Rubyにおける定数は取り扱いを注意しないと、値を変えられたり、参照先を変えることができるので、注意が必要です)