我知道可以做到
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方式。
谢谢大家。
答案 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