0

我正在使用 rails 3 中的联系人数据库..

真正令人沮丧的一件事是家庭关系代码有多丑陋..

在rails中有没有一种干净的方法?

基本上所有的联系人都是联系人类(去图!)

并且联系人有很多family_relationships(另一种模型)和很多亲戚通过family_relationships..家庭关系模型也有一种家庭关系类型(另一种模型)

到目前为止,我已经使用这里的方法http://railscasts.com/episodes/163-self-referential-association实现了这一点(使用反向关系等。)

但这只是感觉不是很干净..如果我想获取所有联系人的亲戚、关系等..我必须使用原始 SQL 或加入数组..

有没有更好的(或确定的)方法可以在 Rails 中完成这种事情?

4

1 回答 1

4

Ancestry gem 似乎正好解决了这种问题:

Ancestry 是一个 gem/插件,它允许将 Ruby on Rails ActiveRecord 模型的记录组织为树结构(或层次结构)。它使用单一的、直观格式化的数据库列,使用物化路径模式的变体。它公开了所有标准的树结构关系(祖先、父、根、子、兄弟、后代),所有这些都可以在单个 sql 查询中获取。其他功能包括 STI 支持、范围、深度缓存、深度约束、从旧插件/gem 轻松迁移、完整性检查、完整性恢复、将(子)树排列为哈希以及处理孤立记录的不同策略。

于 2011-05-30T12:33:32.447 回答