我正在rails 3.中开发联系人数据库
有一件事真的很令人沮丧,那就是家庭关系代码有多丑陋
在铁轨上有干净的方法吗?
基本上,所有联系人都属于联系人类别(见图!)
联系人有许多家庭关系(另一种模式)以及许多通过家庭关系的亲戚。。家庭关系模型也有一种家庭关系类型(另一种模型)
到目前为止,我已经使用这里的方法实现了这一点http://railscasts.com/episodes/163-self-referential-association(使用逆关系等)
但是这感觉不太干净。。如果我想获得所有联系人、亲属、关系等。我必须转到原始SQL或加入数组。。
有没有更好的(或明确的)方法可以在铁轨上完成这种事情?
Ancestry宝石似乎正好解决了这类问题:
Ancestry是一个gem/插件,它允许将RubyonRails ActiveRecord模型的记录组织为树结构(或层次结构)。它使用了一个直观格式化的数据库列,使用了实体化路径模式的变体。它公开了所有标准的树结构关系(祖先、父、根、子、兄弟姐妹、后代),所有这些关系都可以在一个sql查询中获取。其他功能包括STI支持、作用域、深度缓存、深度约束、从旧插件/gem轻松迁移、完整性检查、完整性恢复、将(子)树排列为散列以及处理孤立记录的不同策略。