私は、(友人、家族、隣人など)の一方向の関係を許可したい人物モデルを持っています。ある人物を別の人物の友人としてマークすると、お互いの友達。ActiveRecordの友人関係をモデル化する方法
id person_a_id person_b_id relationship_type
-- ----------- ----------- --------------------
1 1 2 friend
2 1 3 neighbor
これは私に語っ何されています。これは、リレーションシップ・テーブルがどのように見えるかである私たちは、いくつかの人々のデータ(レコードID = 1,2,3,4,5)を持っていると仮定し
今Class People
id
name
Class Relationship
id
person_a_id
person_b_id
relationship_type
、人1は友人(人2)と隣人(人3)を持っています。また、Person 2には友人(Person 1)があり、Person 3には隣人(Person 1)があることがわかります。
Self-Referential Associationでこれを行うことができると思いますが、よりクリーンな方法があると思います。私は何かを見逃していますか、そこに宝石があります、私のあらゆる必要を満たすために待っています(少なくともこの質問が出る限り)?または、私は1つを書く必要があります...
自己参照 'にhas_many:through'は確かに行く方法です。 – meagar
私の友人の合計はinverse_friends + friendsですか? –