2

我必须对关联结构进行建模,并且关联分为部门/细分/部分等。所以我创建了一个简单的实体属性模型:

替代文字

我想使用 rail 的单表继承,但似乎只有在类型列是字符串时才有效。我的问题是如何用我的方法实现这一目标?由于我使用外键作为“类型”,我必须先查询“类型名称”。以前有人做过吗?

4

1 回答 1

1

我建议向您的结构表添加一个字符串“类型”属性以满足单表继承,并添加 before_save 回调以在任一表上设置正确的值。

假设您有一个名为“Basic”的 StructureType。在 Rails 中,这意味着您希望拥有类层次结构:

结构 < ActiveRecord::Base BasicStructure < 结构

在结构类中添加:

before_create :set_structure_type_fk

def set_structure_type_fk
  self.structure_type = StructureType.find_by_name(\ 
      self.class.name.gsub(/Structure/, '').downcase)
end

希望这可以帮助。

请注意,这种方法意味着 StructureType.name 应该是不可变的:一旦创建它就永远不会更改,除非通过相应更新两个表的数据库迁移。

ķ

于 2011-05-30T23:51:41.393 回答