【问题标题】:Tables representing an enumerated list of codes in Rails?代表Rails中代码枚举列表的表格?
【发布时间】:2009-06-01 16:40:00
【问题描述】:

我已经查看了类似的问题,但我仍然对 Rails 中看似简单的情况感到有些困惑。

假设我有一个名为Employee 的模型类。员工的一个属性是他们的security_clearance,它是一个字符串,可以是NoneSomeFull。没有其他值是有效的。在其他应用程序中,我可能会表示这是一个Employees 表,该表具有SecurityClearances 表的外键,该表正好有三行。 SecurityClearances 表包含标题为 code 的列(例如 SEC_CLEARANCE_NONESEC_CLEARANCE_SOME、...)和 value(“无”、“某些”、“完整”)。

我想在 Rails 中如何做到这一点?我想要has_one :security_clearance 上的Employeebelongs_to :employee 上的SecurityClearance 吗?这似乎不太对。

在任何地方都键入 None、Some 和 Full 字符串文字似乎不是最佳选择,尤其是因为要显示的值可能会更改(例如,Some 代码的字符串可能会更改为 @987654338 @ 代替)。


更新:

现在我想了更多,难道我真的只想在 Employee 上添加一个belongs_to :security_clearance 吗?那会成功的,对吧?员工需要知道他们的安全许可级别是多少,但安全许可级别与特定员工无关。

【问题讨论】:

  • 您的更新是正确的。您不需要清除级别课程中的 has_many。但是,迟早,如果您最终不得不报告所有具有特定权限的人,那么您将需要这种关系。

标签: ruby-on-rails database


【解决方案1】:

看看这个插件:http://github.com/mlightner/enumerations_mixin/tree/master

它允许您像has_enumerated :security_clearance 一样定义它,此外还可以缓存 SecurityClearance 模型等。

不过,如果没有插件,您对关系的看法是正确的。

【讨论】:

    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多