1

定义的最佳位置在哪里,我应该如何存储导轨的选择/无线电选项(以及在哪里放置翻译)?

现在我正在模型中定义一个哈希并将整数键存储在记录中。我还将翻译作为“属性”放置在模型翻译中,因为它似乎很好地将它们组合在一起。IE

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 = [ :excellent, :good ]

  • 在活动记录模型翻译下,每组选项都有一个选项组。在上述情况下,我称之为:physical_condition_options

  • 将每个翻译作为其子集,即excellent: "Excellent"
  • 如果我需要将其转换为允许在模型上进行多项选择(复选框)(发生多次),我只需删除此子集并使其成为模型的一部分。迁移更简单,而不必转换数值。
  • 将这些选项传递给字段时有一个助手翻译这些选项

    本地化选项(建筑::物理条件,“activerecord.attributes.building.physical_condition_options。”)

这似乎是存储数据并使其易于翻译的最佳方式。

于 2014-03-01T22:53:33.670 回答