我看过类似的问题,但我仍然对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
代码的字符串可能会更改为而是low clearance
。
既然我已经考虑了这个问题,那么我真的只想在员工身上找到belongs_to :security_clearance
吗?那就行了,对吗?员工需要知道他们的安全许可级别是什么,但安全许可级别与特定员工没有关系。
答案 0 :(得分:1)
看一下这个插件:http://github.com/mlightner/enumerations_mixin/tree/master
它允许您将此定义为has_enumerated :security_clearance
,此外还可以缓存SecurityClearance模型等。
但是,如果没有插件,那么关系就是正确的。
答案 1 :(得分:1)
另请查看GiraffeSoft人员的Enum Fields插件: http://giraffesoft.ca/blog/2009/02/17/floss-week-day-2-the-enum-field-rails-plugin.html