1

私の質問は一見単純そうに見えますが、かなりとらえどころのないものでした。アプリケーションのどこからでも呼び出すことができる1つの値が必要です。これは、モデルの検証に使用する最小値であり、その値をユーザーに通知する必要があります。

これまでのところ、私は次のことを行いました。

config / initializersで、新しい.rbファイルを作成しました(別のスレッドで見つけた提案の下で):

minimum = 15

Railsサーバーを起動した後に見つからなかっただけです。

en.ymlに値を最小にするという奇妙な提案を見つけました:15、上記と同じ問題。

明らかに、モデルに値が必要なため、アプリケーションヘルパーとコントローラーは役に立ちません。しかし、私はそれをconfig/application.rbのクラスApplicationに入れるという1つの解決策を見つけました。

config.after_initialize do
    ::Minimum = 15
end

その後、次のように呼び出します。

MyApp::Application::Minimum

明らかに、このソリューションは機能しますが、理想的ではありません。MyApp :: Application :: Minimumを「最小」としてエイリアスする方法を見つけることができれば、完全に満足しますが、初期化子でそれを実行することは、私が聞いたところによると、より良い解決策です。

4

1 に答える 1

1

必要に応じてモデルに何かを貼り付けて、どこからでも呼び出すことができます。

Couriers = %w[TNT UPS RoyalMail Bike Hand Pigeon Other]

しかし、私はそれらをyamlファイルに入れることを好みます。

configsディレクトリにconfig.ymlファイルを作成し、そこにvarsを配置します。

defaults: &defaults

   node_1: '10.8'
   node_2: '10.9'
   node_3: '10.0'

   whatever: 1
   thereis: 2

development:
  <<: *defaults

playground:
  <<: *defaults

production:
  <<: *defaults

poststaging:
  <<: *defaults

test:
  <<: *defaults

イニシャライザディレクトリでこのようなものを使用して設定ファイルをロードします。/ config / initializersに「load_vars.rb」というファイルを作成し、そこに次のファイルを配置します。

SETTINGS = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]

ただし、これらを変更した後は、サーバーを再起動する必要があります。

- 編集 -

これらの変数を使用するには、モデル、コントローラー、ビューから次のようなものをロードできます。

SETTINGS['var_1']
于 2012-12-16T19:30:03.073 に答える