2010-11-24 25 views
0

Rails 3で小さなコミュニティをコーディングしています。プロファイルと連絡先という2つのテーブルがあります。ユーザーが別のユーザーと友だちを追加すると、2つの列を保持するContactsという表に保存されます。 profile_idおよびfriend_id。Rails 3で外部キー検索が失敗する

PROFILE_ID:ユーザーIDは Friend_idに保存されているところである:これは、別のユーザーが、私はそれが家庭のユーザーに表示したい友人としてユーザーを追加した場合、他のユーザーのIDが

を保存する場所です他のユーザーも追加することができますが、ユーザーが既に他のユーザーを友達として持っていない場合にのみ表示します。

私は以下のコードを試しましたが、私が望むように動作していないようです。

@connections = Contact.where(["friend_id = ?", params[:profile_id]]) 

@notfriends = @connections.find_all {|profile| Contact.where(["profile_id = ? AND friend_id = ?", profile.friend_id, params[:profile_id]])} 

何が間違っていますか?これは正しい構文ですか?

UPDATE

だから私は達成するために探していますは、次のとおりです。

  1. ユーザーが友人(friend_id)として設定されているすべての連絡先を取得します。
  2. それから私は、ユーザーが既に友人(PROFILE_ID)として持っていない上記のクエリから連絡先を取得したいと思います。
+0

モデル '連絡先'と 'プロフィール'で適切な関連付けを使用しましたか? (http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html) – Patrick

+0

はい私はこう考えています。連絡先では「belongs_to:profile」を使用し、プロフィールでは「has_many:contacts」を使用します。これは正しいです? –

答えて

0

params [:profile_id]とprofile.friend_idの2行目は、最初のクエリでfriend_id == params [:profile_id]というエントリを検索しているので同じです。

+0

よろしくお願い致します。私は自分の質問を更新しました。私は質問をすべて私が達成したいと思っているものから間違っていると信じています。正しいクエリを表示してください。 –

関連する問題