2

Rails 3アプリで、次のような変数を定義したいと思います。

PERSONAL_DOMAINS = %w[
  @126.com
  @163.com
  @aim.com
  @aol.com
]

次に、user.rbでこれを次のような検証に使用できるようにします。

return true if PERSONAL_DOMAINS.any? { |rule| "@#{domain}".include? rule }

別のモデルでも使いたいです。

そのようです:

domain_rules = [PERSONAL_DOMAINS]
domain_rules.each { |rule| return false if !domain.match(rule).nil? }

Railsの場合、このPERSONAL_DOMAINSのリストをどこでどのように定義する必要がありますか?YML、config、initializer?そして、それをどのように正しく使用しますか?

ありがとう

4

3 に答える 3

2

値が異なる環境で変更されないと仮定して、これを行うことを検討する2つの方法があります。どちらの場合も、次のような初期化子に入れる必要があると思います。

config/initializers/personal_ip_addresses.rb

次に、定数を含むファイルを作成できます。

  PERSONAL_DOMAINS = %w[
      @126.com
      @163.com
      @aim.com
      @aol.com
    ]

上記のように単純に使用します。

return true if PERSONAL_DOMAINS.any? { |rule| "@#{domain}".include? rule }

または、構成ルートに移動したい場合:

YourApplicationClass::Application.config.personal_domains = %w[
      @126.com
      @163.com
      @aim.com
      @aol.com
    ]

そして、あなたはそれをこのように使うでしょう:

Rails.configuration.personal_domains

個人的に私はそれをシンプルに保つように努めており、一定に保ちます。

于 2013-03-25T21:48:49.913 に答える
1

アプリ全体で利用できるようにしたい場合は、application.rbでこれを定義できます。

たとえば、以下で何かを定義する場合

module MyApp
  class Application < Rails::Application

    PERSONAL_DOMAINS = %w[
      @126.com
      @163.com
      @aim.com
      @aol.com
    ]
    etc.

その後、MyApp :: Application::PERSONAL_DOMAINSとして呼び出すことができます

それがあなたが本当に欲しいものなら。ただし、これを行うために初期化ファイルを設定し、簡単に変更できる1つの場所に保持するのがおそらく最善です。

于 2013-03-25T20:55:07.790 に答える
1

configatronを試しましたか?

私は通常、すべての構成変数に使用しますが、うまく機能します。

于 2013-03-25T21:29:24.663 に答える