9

静的データセット(非動的)を処理するための最良の方法は何ですか?

たとえば、10個の異なるインスタンスのセットがあり、それぞれが一意であるが、アプリケーションの存続期間を通じて変更されることのないモデルがあるとします。activerecordモデルを作成してこのデータをデータベースに保存するのはやり過ぎのようですが、ジェネリッククラスを作成してこのデータをコードに保存するのは醜いようです。

ベストプラクティスとして受け入れられているものは何ですか?


例:

レートユーザーがあります。ユーザーは1から10までのレベルを持つことができ、レベルが変わるとレートが変わります。レートには他の情報が含まれている可能性があるため、ユーザーに属性として保存するだけでは、価値があるよりも面倒な場合があります。それをレートに結び付けるか、次のようにユーザーのメソッドとして作成するのは理にかなっていますか?

def rate
  case self.level
  when 1:
    { value: "foo", something: "bar", else: "baz" }
  when 2:
    # etc
  end
end

どちらの解決策も理想的ではないようですが、他に何か理想的なことが起こるかどうかはわかりません。

4

2 に答える 2

1

この情報をYAMLファイルに保存します。RailsConfig gemを使用して、次のようなYAMLファイルを作成できます。

level:
  1:
    some: value
    another: value
  2:
    some: second value
    another: second value

そして、それにアクセスします

rate = 2
val = Settings.level[rate.to_s].some

(YAMLのキーとして数字を使用するかどうかは完全にはわかりません。おそらく、数字をエスケープする必要があります)

于 2012-11-14T17:17:10.427 に答える
0

この場合、定数を使用します。定数は宣言後に変更されませんが、宣言は動的にすることができます。

OS =
  case RUBY_PLATFORM
  when /linux/   then :linux
  when /osx/     then :osx
  when /windows/ then :windows
  else                :unknown

静的な値に定数を使用すると、メモ化する必要があるため、パフォーマンスが向上するはずです(静的性が目的であるため、おそらくRubyの実装はそれを信頼しています。JRubyと定数の実装について何か読んだので、投稿します。 ll find。EDIT私はそれを見つけました:http://blog.headius.com/2012/09/avoiding-hash-lookups-in-ruby.html)。

于 2012-11-14T16:24:06.787 に答える