2017-04-20 3 views
1

私は特定のスコープを書くのに苦労しています。nilと等しくないすべての項目を表示するスコープを書く - Rails 5

event.rb fileには、支払いのないすべての予定を表示するスコープを作成することができました。言い換えれば、ユーザが出席するために支払っていないイベントを表示する。したがってevent_id is nil

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

支払いのイベントは、一つは親切に私はそのための支払いを持っているすべてのイベント 、event_id is not nil支払いのイベントを表示するスコープを書く方法を私に言うことができます。私は以下を試しましたが、これは ではないevent_idのすべての支払いではなく、 event_id = 1の支払いのみを表示します。

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

あなたのアドバイスをいただければ幸いです

答えて

2

.where.notとしてみてください、何かのように:

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

はRailsのためにnot-conditions

を見てみましょう3.x

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

awesome !!!!ありがとうございます!!! – ARTLoe

1

また、これを試すことができます:それは簡単に理解できる

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

関連する問題