2 Stimmen

Activerecord: Suche nach nicht verbundenen und verbundenen Datensätzen mit einer einzigen Abfrage

In folgendem Szenario mit activerecord:

Benutzer gehört_zu Ereignis

Ich möchte alle Benutzer finden, die kein Ereignis mit dem Namen "Party" haben.

Also habe ich Folgendes versucht:

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

Es werden jedoch nur die Benutzer angezeigt, die zwar ein Ereignis haben, aber kein "Party"-Ereignis. Es wird nicht alle Benutzer zurückgeben, die überhaupt kein Ereignis haben, weil :joins die Ergebnisse automatisch nur auf verknüpfte Datensätze beschränkt.

Ich könnte zwei Abfragen durchführen und die Ergebnisse addieren, aber gibt es eine Möglichkeit, in einer Abfrage die nicht verknüpften Datensätze sowie die verknüpften Datensätze, die der Bedingung entsprechen, abzurufen?

3voto

Sarah Mei Punkte 17568

Wie wäre es damit?

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X