1

定義するのに最適な場所はどこですか?また、レールの選択/ラジオ オプションをどのように保存すればよいですか (および翻訳をどこに配置するか)?

現在、モデル内でハッシュを定義し、整数キーをレコードに保存しています。また、翻訳をモデル翻訳内に「属性」として配置しました。これは、翻訳がうまくグループ化されているように見えるからです。すなわち

PHYSICAL_CONDITIONS = {
  1 => "activerecord.attributes.building.condition_excellent",
  2 => "activerecord.attributes.building.condition_good",
  3 => "activerecord.attributes.building.condition_average_for_age",
  4 => "activerecord.attributes.building.condition_fair",
  5 => "activerecord.attributes.building.condition_poor"
}.freeze

これを行うより良い方法はありますか?オプションを含む多数のフィールドがあり、それぞれに個別のテーブルを作成したくありません。

4

1 に答える 1

0

私の解決策は次のとおりです。

  • varchar を使用して回答を保存します。つまり、上記の「優れた」、「良い」です。これは、生の形式と数値で見ることができる実際の意味のあるデータです。
  • 私のモデルにはオプション配列があります。順序は維持され、並べ替えても番号は関係ありません。

    PHYSICAL_CONDITIONS = [ :非常に良い, :良い]

  • アクティブなレコード モデルの翻訳の下に、オプションの各セットのオプション グループがあります。上記の場合、私はそれを呼び出します:physical_condition_options

  • 各翻訳をそのサブセットとして持つ、つまりexcellent: "Excellent"
  • モデルで複数の選択 (チェックボックス) を許可するようにこれを変換する必要がある場合 (何度も発生)、このサブセットを削除してモデルの一部にします。数値を変換する必要がなく、移行がより簡単になります。
  • フィールドに渡すときに、ヘルパーにこれらのオプションを変換させます

    localized_options(Building::PHYSICAL_CONDITIONS, "activerecord.attributes.building.physical_condition_options.")

これは、データを保存して簡単に翻訳できるようにするための最良の方法のようです。

于 2014-03-01T22:53:33.670 に答える