のは、私がGate
オブジェクトのための私のフォームで、次の選択ボックスがあるとしましょう:Railsフォームで、オプションをデータベースにハッシュとして保存するかどうかを選択できますか?
f.select(:type_use, options_for_select([['Enter & Exit', 8],
['Only Enter', 4],
['Only Exit', 4],
['Only Enter for visitors', 2],
['Only Exit for visitors', 2]],
@gate.type_use),
{ :include_blank => '- select -' },
{ :class => 'form-control'})
これらのオプションは変更されることはありません。 4と8のような整数は1日あたりのサイクル数を表し、後でこの整数を使って計算を行います。しかし、私はまだ私のビューで使用するために、各整数の正しい文字列のラベルを保持したいので、私は、ゲートが '唯一の出口'タイプの使用を示すことができます。
したがって、選択オプションをハッシュとして保存することはできますか?または、Railsはアプリケーションで使用するために整数を文字列にマップする方法がありますか?
これまでは、文字列値を保存してから、if
ステートメントを使用して、計算に先立って文字列値に基づいて対応する整数を手動で変数に割り当てていました。しかし、私はまだこれを行うためのより効率的かつエレガントな方法を発見していない。
私の研究で私はEnumsに関する情報を見つけましたが、私は重複した整数を持っているためこの状況に当てはまるとは思わないし、Enumは私には連続したインデックスのようです。また、あなたがHash
を保存したいModel
にSerializeを使用してHash
とArray
を保存することができ、選択ボックス内のハッシュに関する他の質問ではなく、ハッシュ
あなたは「これらのオプションは決して言わなかったことを考えると
hstore
拡張を有効にしてからの移行でそれを使用する必要があり、それを使用するにはHash
で検索やインデックスの項目を実行することができます変更 "なぜあなたはこれをデータベースに保存したいのですか?いくつかのイニシャライザで定数を定義することをお勧めしますか?例えばconstants.rb? –
私が完全に従うかどうかわからない...それぞれの 'gate'は、これらの5つのオプションのうちの1つを選択します。その選択を保存する必要があります。文字列と整数の両方の値を保存する必要はありませんが、それは本当です。しかし、私は少なくとも1つを保存する必要があります。 – Ren
hstoreはおそらくあなたが以下のREをしたいと思っています。私はちょうどあなたが "ああ、2を意味する定数のいくつかの並べ替えを持つことができたときにDBに文字列を格納する理由を理解していないと言っている '2つの'訪問者のためだけに入力"、しかし問題はあなたです複数のIDが同じ文字列にマッピングされているようです... –