11

たとえば、時刻 (午前 7 時、午前 7 時 30 分など) などのデータの配列があり、いくつかの場所に保存して参照する必要があります。

1) このデータはどこに保存すればよいですか? 私はもともと自分のDBで考えていました(私はmongoidを使用しています)が、それがやり過ぎかどうかはわかりません。

2) それを参照するにはどうすればよいですか? ドロップダウンメニューから言ってみましょう。

4

4 に答える 4

6

このような状況ではConstants、libにモジュールを作成します。

module Constants
  SCHEDULER_STEPS = %w( 7:00am 7:30am )
end

次に、必要な場所からアクセスします。

Constants::SCHEDULER_STEPS

注:libs構成ファイルの自動ロードパスに必ず追加してください。

于 2012-09-08T13:04:51.280 に答える
2

そのような種類の要件については、私は好みます

1番目)作成するconfig/app_constants.yml

ここにコード

production:
  time_list: "'7:00am','7:30am','7:40am'"
test:
  time_list: "'7:00am','7:30am','7:40am'"
development:
  time_list: "'7:00am','7:30am','7:40am'"

2番目の下で作成lib/app_constant.rb

module AppConstant
  extend self

  CONFIG_FILE = File.expand_path('../config/app_constants.yml', __FILE__)
  @@app_constants = YAML.load(File.read(CONFIG_FILE))
  @@constants = @@app_constants[Rails.env]

  def get_time_list
    @@constants['time_list'].split(',')
  end
end

3番目のようにどこでもそれを呼び出す

AppConstant.get_time_list #will return an array

これを使用すると、1つのクリーンな場所()で変更を加えるだけで、使用app_constants.ymlする場所を問わず、アプリケーション全体に反映されます。AppConstant.get_time_list

于 2012-09-08T14:00:56.850 に答える
2

最終的に、次のコードを使用して「/config/initializers」に「global_constants.rb」ファイルを作成しました。

module Constants
    BUSINESS_HOURS = ["6:00am","6:15am","6:30am","6:45am","7:00am"]
end

次に、特に選択ボックス用にデータを呼び出しましConstants::BUSINESS_HOURSた。コードは次のとおりです。<%= f.input :hrs_op_sun_open, :collection => Constants::BUSINESS_HOURS %>

ここでの答えの多くは実行可能であるように思われ、私が必要としていたことを行うためのすべての正しい方法であると思います.

于 2012-09-08T20:37:17.827 に答える
2

この種のデータは、最も密接に関連するモデルに配置することを好みます。たとえば、例の時間がバックアップを実行する時間である場合、それらBackupをバックアップに関連する残りの動作とともにモデルに入れます。

# app/models/backup.rb
class Backup < ActiveRecord::Base
  AVAILABLE_RUN_TIMES = %w{7:00am 7:30am ...}

  def run_at=(date)
    BackupSchedule.create(self, date)
  end
end

# app/views/backups/_form.html.erb
<%= select_tag(:run_at, options_for_select(Backup::AVAILABLE_RUN_TIMES)) %>

私も「定数の大きなバケツ」アプローチを使用しましたが、定数が存在する場所が本当にこれ以上ない場合にのみ使用します。

于 2012-09-08T13:25:15.317 に答える