我必须对关联结构进行建模,并且关联分为部门/细分/部分等。所以我创建了一个简单的实体属性模型:
我想使用 rail 的单表继承,但似乎只有在类型列是字符串时才有效。我的问题是如何用我的方法实现这一目标?由于我使用外键作为“类型”,我必须先查询“类型名称”。以前有人做过吗?
我必须对关联结构进行建模,并且关联分为部门/细分/部分等。所以我创建了一个简单的实体属性模型:
我想使用 rail 的单表继承,但似乎只有在类型列是字符串时才有效。我的问题是如何用我的方法实现这一目标?由于我使用外键作为“类型”,我必须先查询“类型名称”。以前有人做过吗?
我建议向您的结构表添加一个字符串“类型”属性以满足单表继承,并添加 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 应该是不可变的:一旦创建它就永远不会更改,除非通过相应更新两个表的数据库迁移。
ķ