2017-04-20 2 views
1

Ich habe Probleme mit dem Schreiben eines bestimmten Bereichs und Ihre Hilfe wäre sehr willkommen.Einen Bereich schreiben, um alle Elemente anzuzeigen, die nicht gleich Null sind - Rails 5

In der event.rb file, ich habe es geschafft, einen Bereich zu schreiben, der alle Ereignisse anzeigt, die keine Zahlungen haben. Mit anderen Worten, zeigt Ereignisse an, für die Nutzer nicht bezahlt haben. Daher Ereignisse mit Zahlungen, bei denen die event_id is nil

scope :unbooked_events, -> { includes(:payments).where(payments: { event_id: nil }) } 

könnte man freundlich erklären mir, wie ich einen Bereich schreiben, die alle Ereignisse zeigt die Zahlungen haben also Ereignisse mit Zahlungen, bei denen die event_id is not nil. Ich habe versucht, die unten, aber dies zeigt Zahlungen mit einer nur anstelle aller Zahlungen, bei denen die Ereignis-ID, die nicht ist.

scope :booked_events, -> { includes(:payments).where(payments: { event_id: !nil }) } 

Ihre beraten viel

Antwort

2

Für Rails 4.x würde geschätzt, versuchen mit .where.not, wie etwas:

scope :unbooked_events, -> { includes(:payments).where.not(payments: { event_id: nil }) } 

Werfen Sie einen Blick auf not-conditions

Für Rails 3.x

scope :unbooked_events, -> { includes(:payments).where("payments.event_id IS NOT NULL") } 
+0

ehrfürchtig !!!! Danke!!! – ARTLoe

1

Sie können auch versuchen, diese:

scope :unbooked_events, -> { includes(:payments).where('payments.event_id is not NULL') } 

Es ist leicht verständlich ist.

Verwandte Themen