【发布时间】:2009-06-01 16:40:00
【问题描述】:
我已经查看了类似的问题,但我仍然对 Rails 中看似简单的情况感到有些困惑。
假设我有一个名为Employee 的模型类。员工的一个属性是他们的security_clearance,它是一个字符串,可以是None、Some 或Full。没有其他值是有效的。在其他应用程序中,我可能会表示这是一个Employees 表,该表具有SecurityClearances 表的外键,该表正好有三行。 SecurityClearances 表包含标题为 code 的列(例如 SEC_CLEARANCE_NONE、SEC_CLEARANCE_SOME、...)和 value(“无”、“某些”、“完整”)。
我想在 Rails 中如何做到这一点?我想要has_one :security_clearance 上的Employee 和belongs_to :employee 上的SecurityClearance 吗?这似乎不太对。
在任何地方都键入 None、Some 和 Full 字符串文字似乎不是最佳选择,尤其是因为要显示的值可能会更改(例如,Some 代码的字符串可能会更改为 @987654338 @ 代替)。
更新:
现在我想了更多,难道我真的只想在 Employee 上添加一个belongs_to :security_clearance 吗?那会成功的,对吧?员工需要知道他们的安全许可级别是多少,但安全许可级别与特定员工无关。
【问题讨论】:
-
您的更新是正确的。您不需要清除级别课程中的 has_many。但是,迟早,如果您最终不得不报告所有具有特定权限的人,那么您将需要这种关系。