如果种类不固定或数量很多,可以建一个 relation 的 model(user_a,user_b,relation)来管理这些关系。当然这样查询的时侯你需要自己处理。你可以自己封装些方法来简化查询操作,也可以使用带条件的 has_many through 来声明关联,甚至可以在 User Model 中使用一点元编程实现和 rails 多对多关联一样的调用方式,从而淡化这个 relation 的存在。
有可能两人的关系是同一属性,比如朋友关系,正反都一样。有可能正反向不一样,比如父子,夫妻。
结合 @IChou 提到的建一个 relation 的 model,我现在想到的方法是:
在创建 A 的 son 是 B 这个关系时,同时检测 son 的对应属性是 father,然后同时创建一个反向 relation。
而且还需一个数据表来储存 father 与 son 的对应关系。