如何用“where”,“having”和“or”来定位

时间:2013-04-25 10:32:12

标签: sql ruby-on-rails activerecord

我知道可以做到

scope :public_visible, where("(status = ?) OR (end_date > ?)", :published, Date.today)

但我想要做的是将以下两个范围与 OR

结合起来
scope :succeeded, having("SUM(orders.sum) >= goal")
scope :ongoing, where("end_date >= ?", Date.today)

这可能吗?无论是以sql还是activerecord方式。

谢谢大家。

2 个答案:

答案 0 :(得分:1)

不是一个完美的解决方案,但我最终做了

scope :succeeded_or_ongoing, where("id in (?) or id in (?)", Project.succeeded.map(&:id), Project.ongoing.map(&:id))

答案 1 :(得分:0)

最好在我的诚实意见中使用ARel(link)。你会有类似的东西:

def succeeded_or_ongoing
  where("id in (?) or id in (?)", Project.succeeded.map(&:id), Project.ongoing.map(&:id))
end

然后执行Project.succeeded_or_ongoing