2009-03-29 5 views
2

Étant donné le scénario suivant, en utilisant activerecord:activerecord: Trouver plus de non associés enregistrements associés à une seule requête

utilisateur belongs_to événement

Je veux trouver tous les utilisateurs qui ne disposent pas d'un événement avec le nom "fête".

J'ai donc essayé les éléments suivants:

User.all(:joins => :event, :conditions => ["events.name != ?", "party"]) 

Cependant, cela ne retournera les utilisateurs qui ont un événement, mais tout simplement pas un événement « partie ». Il ne renverra pas tous les utilisateurs qui n'ont aucun événement, car: les jointures limitent automatiquement les résultats aux enregistrements associés uniquement.

Je pourrais faire deux requêtes et ajouter les résultats ensemble, mais est-il possible, dans une requête, de récupérer les enregistrements non associés, plus les enregistrements associés qui correspondent à la condition?

Répondre

3

Que pensez-vous de cela?

User.all(
    :include => :event, 
    :conditions => ["users.event_id IS NULL OR events.name != ?", "party"]) 
+0

Merci, Sarah. J'avais essayé les mêmes conditions mais avec: des jointures, qui ne fonctionnaient pas. Je me sens comme un idiot que je n'ai pas pensé à utiliser: inclure à la place. Je vis et apprends :-). –

Questions connexes