如何在Activerecord中使用大于“或”条件?

时间:2015-10-05 00:44:38

标签: sql ruby-on-rails ruby date activerecord

如何在activerecord中使用大于和“或”条件? 这是我想要做的:

@contract_dues_now = ContractDue.where(:status => ['Unpaid', 'Partially Paid']).
  where(due_date: Date.today || ContractDue.arel_table[:due_date].gt(Date.today)).
  group(:contract_id).order(:due_date) 

这对我来说似乎不对,因为我的查询结果没有像它想象的那样输出OR语句:

enter image description here

2 个答案:

答案 0 :(得分:1)

这应该这样做:

@contract_dues_now = ContractDue.where(:status => ['Unpaid', 'Partially Paid']).
    where('contract_dues.due_date = ? OR contract_dues.due_date > ?', Date.today, Date.today).
    group(:contract_id).order(:due_date)

答案 1 :(得分:0)

arel支持或运营商。

where(ContractDue.arel_table[:due_date].eq(Date.today).or(ContractDue.arel_table[:due_date].gt(Date.today)))

https://github.com/rails/arel#more-sophisticated-queries