2010-11-24 7 views
0

Je suis en train de coder une petite communauté dans Rails 3 et j'ai deux tables, Profiles et Contacts. Lorsqu'un utilisateur ajoute une amitié avec un autre utilisateur, il est enregistré dans une table appelée Contacts qui contient deux colonnes; profile_id et friend_id.La recherche de clé étrangère échoue dans Rails 3

PROFILE_ID: C'est là que les utilisateurs ID est enregistré Friend_id: C'est là l'autre ID utilisateur est enregistré

Si un autre utilisateur ajoute l'utilisateur comme un ami que je veux qu'il apparaisse sur les utilisateurs à domicile écran afin qu'il puisse ajouter l'autre utilisateur, mais je veux seulement qu'il apparaisse si l'utilisateur n'a pas déjà l'autre utilisateur en tant qu'ami.

J'ai essayé le code ci-dessous, mais il ne semble pas fonctionner comme je le veux.

@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]])} 

Des idées quel est le problème? Est-ce la syntaxe correcte?

MISE À JOUR

Alors ce que je cherche à atteindre est:

  1. Obtenir tous les contacts où l'utilisateur est défini comme ami (friend_id).
  2. Ensuite, je voudrais obtenir seulement les contacts de la requête ci-dessus que l'utilisateur n'a pas déjà en tant qu'ami (profile_id).
+0

Avez-vous utilisé les bonnes associations dans les modèles 'Contacts' et 'Profils'? (http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html) – Patrick

+0

Oui, je le pense, dans Contacts j'utilise: "belongs_to: profile" et dans Profiles j'utilise: "has_many: contacts". Est-ce correct? –

Répondre

0

Dans la ligne 2 de votre code params [: profile_id] et profile.friend_id sont nécessaires la même chose ... puisque dans votre première requête vous recherchez une entrée où friend_id == params [: profile_id].

+0

Ok, merci! J'ai mis à jour ma question et je crois que ma requête est tout à fait fausse de ce que je voudrais accomplir. Pourriez-vous s'il vous plaît me montrer la bonne question? –

Questions connexes