我必须对关联结构进行建模,并将关联划分为divisions / subdivisions / sections等。所以我创建了一个简单的实体 - 属性模型:
我想使用rails的单表继承,但似乎仅当type列是字符串时才有效。我的问题是如何用我的方法实现这一目标?由于我使用外键作为“类型”,我必须首先查询“类型名称”。有没有人这样做过?
答案 0 :(得分:1)
我建议在结构表中添加String“type”属性以满足单表继承,并添加before_save回调以在任一表上设置正确的值。
假设您有一个名为“Basic”的StructureType。在Rails中,这意味着您需要具有类层次结构:
结构<的ActiveRecord :: Base的 BasicStructure<结构
在Structure类中添加:
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应该是不可变的:一旦创建,它就永远不会被更改,除非相应地更新两个表的数据库迁移。
ķ