railsアプリ内で共通で使う変数の定義方法
アプリ内で共通で使いたい変数がある時はconstants.rbのファイルを作るのが一般的らしい。
config/initializers/constants.rb
module Constants HASH_DATA = { value: "key" } end
参照する時は
Constants::HASH_DATA
コントローラー内で共通で使いたい時
application_controllerに書く
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base HASH_DATA = { value: "key"} end
または、concernsに
app/controllers/concerns/FooConstant.rb
module FooConstant HASH_DATA = { value: "key"} end
として、
FooConstant::HASH_DATA
これで参照したりできる。
ちなみに、concernsで定義することの利点はコントローラーが三つ以上あって変数もたくさんあるとき、それぞれ読み込む変数を変えたいなどができそう(名前がぶつかりたくないので必要最低限読み込みたいみたいなことができる) app/controllers/concerns/ValueAConstant.rb
module ValueAConstant VALUE_A = "abc" end
app/controllers/concerns/ValueBConstant.rb
module ValueBConstant VALUE_B = "zyx" end
と定義しておいて app/controllers/func_a_controller.rb
class FirstController < ApplicationController include ValueAConstant def index p VALUE_A end end
app/controllers/func_b_controller.rb
class FirstController < ApplicationController include ValueBConstant def index p VALUE_B end end
app/controllers/func_c_controller.rb
class FirstController < ApplicationController include ValueAConstant include ValueBConstant def index p VALUE_A p VALUE_B end end