查找表、枚举或函数以从Rails中的键返回值



我有两个模型,Tutor和Student。导师可以有他可以涵盖的多个主题,学生可以有他想学习的多个话题。有10个可能的主题(字符串)。

我正在考虑创建一个Topic表,其中包含主题字符串。但这会造成这些字符串不必要的重复(使表变得沉重)。所以我创建了一个只包含主题键的Topic表。

然而,我还没有决定如何检索价值:

首先,我可以创建另一个查找表,它将键映射到字符串值。这将导致额外的合并步骤。

其次,我可以有一个属于Topic的类函数,它从值返回字符串。

在我的情况下,哪种方式更有效?有没有我没有想过的更好的方法?

谢谢。

这取决于情况。国际海事组织的"主题"听起来像是需要管理的东西,而且可能会改变。

如果是这样的话,应该有一个主题表,包含id、名称,可能还有描述等。导师和学生都会将have_many主题:through作为联接表。主题将belong_to两者。

有几个实现选项,包括主题的多态关联。

假设Tutor模型可以滚动到具有角色分配的User模型中,则在Users和Topics之间设置has_and_belongs_to_many关系。这将建立一个连接表,其中列出外键,以将较重的行连接在一起。

class User < ActiveRecord::Base
  has_and_belongs_to_many :topics
end
class Topic < ActiveRecord::Base
  has_and_belongs_to_many :users
end

有关更多说明,请参阅《Rails Guide》。

另一种选择是只使用has_many关联,但它缺少联接表,因此需要为每个实例复制Topic条目。

最新更新