2012-03-12 10 views
2

Imは相互の2ウェイの関係を行う方法を把握しようと、それは次のようになります。ruby​​ on railsはアクティブなレコードで双方向の友人関係を取得していますか?

user_id friend_id 
    1   2 
    2   1 

上記のユーザー1では、両方のuser_id = 1friend_id = 2friend_id = 2を持っている場合、ユーザ2が友人だろうuser_id = 2たとしてそこに友人がでテーブル。 ActiveRecordの双方向相互関係を数える方法は?

答えて

2

は何あなたが探しているのはhas_and_belongs_to_many relationshipです:

class User < ActiveRecord::Base 
    has_and_belongs_to_many :friends, :class_name => "User", 
            :foreign_key => "this_user_id", 
            :association_foreign_key => "other_user_id" 
end 

§4.4.2.1からです。

+1

この場合、 'has_many:through'との豊富な関連付けを使用する必要があります。このようにして、あなたは「友人」、「ユーザー1の要求」、「ユーザー2の要求」などの関係ステータスを持つことができます。 – Ashitaka

+0

@Ashitaka実際、あなたは、has_and_belongs_to_many'から将来的に具体的な結合モデルに移行する(比較的シームレスに)ことができます。 –

1

Micheal HeartlのRuby on Railsチュートリアルの最後の章を読んでください:実際にこの種の例を説明している例でRailsを学んでください。ここに無料のオンライン版があります。

https://www.railstutorial.org/book/following_users

最終章を見てみましょう。私はそれが助けて欲しい

+1

「新しいテーブルを作成しないでください。テーブルを作成してください...」という矛盾はありませんか? –

関連する問題