簡體   English   中英

復雜的條件Rails 3 ActiveRecord查詢

[英]Complex conditional rails 3 activerecord query

以下是Package.rb中的當前代碼

def self.available
  joins(:deals).where(:available_for_purchase => true).uniq
end

現在,我想獲得更多關於包裝的條件,這里的條件是:

:duration != nil
:expiration_date > Date.today
  • :duration和:expiration日期都不應同時存在,我的意思是其中之一必須為null,

  • 兩者也不能為null。

  • 返回滿足以上所有條件的包裹

提前致謝。

我希望我理解正確的問題,可以嘗試一下:

def self.available
  joins(:deals).where("available_for_purchase = ? AND duration NOT ? AND expiration_date > ?",
      true,
      nil,
      Date.today
  ).uniq
end

好的,終於得到了查詢,這是結果

def available
    joins(:deals).where("available_for_purchase=?
            AND(
               (expiration_date IS NOT NULL AND expiration_date > ? AND duration IS NULL)
                OR (duration IS NOT NULL AND expiration_date IS NULL)
         ) ",true,Date.today).group(:id)
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM