1

以下是 Package.rb 中的当前代码

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

现在我想要更多关于包裹的条件,这里的条件是::

:duration != nil
:expiration_date > Date.today
  • :duration 和 :expiration date 都不应该存在,我的意思是其中一个必须为空,

  • 两者也不能为空。

  • 退回满足上述所有条件的包裹

提前致谢。

4

2 回答 2

0

我希望我理解这个问题是正确的,你可以试试这个:

def self.available
  joins(:deals).where("available_for_purchase = ? AND duration NOT ? AND expiration_date > ?",
      true,
      nil,
      Date.today
  ).uniq
end
于 2012-11-10T23:55:24.467 回答
0

好的,终于得到了查询,这是结果

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
于 2012-11-11T20:29:31.697 回答