web-dev-qa-db-ja.com

Rails 3アプリケーションで定数をどこにどのようにコーディングするか

重複の可能性:
Ruby on Rails:グローバル定数を定義する場所?

新しいアプリケーションでこれを「RailsWay」にすることに興味があります。また、コードを読みやすくするために、ある種のコンテキストで定数を参照したいと思います。ユーザーが別のユーザーのデータセットへのアクセスを要求できるアプリケーションがあります。このAccessRequestは、次のいずれかのステータスになります。

レビュー拒否承認済み

これらの値は将来レポート機能で使用されるので、スペルや大文字の問題を回避するために、これらの値を定数にしたいと考えています。これらをconfig/initializersディレクトリのconstants.rbファイルに入れるだけだと思いました。

これらをAccessRequest :: REVIEWと呼びたいと思います。私はすでにAccessRequestというモデルを持っているので、そこに置くのは理にかなっていますか?または、config/initializersディレクトリのconstants.rbファイルのクラスでそれらをラップしますか? Rails Way?

34
AKWF

Rails 3。では定数を使用する必要はありません。Rails:: Applicationシングルトンを使用することをお勧めします。

Application.rbでは、次のように定数を定義できます。

module Yourapp
  class Application < Rails::Application

    config.access_request.review = 'xxx'
  end
end

あなたのコードの後で呼び出すことができます

Yourapp::Application.config.access_request.review

各環境で値を変更した後は、config/environments/production.rbまたは他の環境でconfig.xxを定義するだけです。

43
shingara

返信が遅れましたが、この回答が検索結果に表示されるため、投稿します。定数はモデルに直接関係するため、モデルに定数を配置することには意味があります。 Railsアプリケーション構成を使用して定数を格納するのは正しくありません。

Application.rbにリストされているコメントによると:

# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded

これはRails 3。 の時点でまだ有効です

28
Sasha