代码之家  ›  专栏  ›  技术社区  ›  sled

使用外键(ID)的Rails单表继承

  •  2
  • sled  · 技术社区  · 14 年前

    我必须对关联结构进行建模,关联被划分为分区/子分区/部分等。因此,我创建了一个简单的实体属性模型:

    alt text

    我想使用rail的单表继承,但似乎只有当类型列是字符串时,它才起作用。我的问题是如何用我的方法实现这一点?因为我使用外键作为“type”,所以我必须首先查询“type name”。以前有人这样做过吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Konstantin Gredeskoul    13 年前

    我建议在结构表中添加一个字符串“type”属性,以满足单表继承,并在保存回调之前添加一个字符串“type”属性,以便在任一表上设置正确的值。

    结构<ActiveRecord::Base

    在结构类中添加:

    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应该是不可变的:一旦创建了表,就不应该更改它,除非通过相应地更新两个表的数据库迁移。

    K公司