我想获得datetime属性为NULL或在时间范围内的所有记录。如何在where
内的条件中添加or where disbursed_at IS NULL
?我的实际查询要长得多,我不想使用.or
Investor.left_join(:disbursements).where(disbursements: { disbursed_at: year_period })
一般来说,您可以通过提供至少包含一个nil
元素的Array
作为Hash
参数的一部分来添加OR column_X IS NULL
条件。
例如:
Investor
.left_join(:disbursements)
.where(disbursements: { disbursed_at: [year_period,nil] })
假设year_period
是Range
,结果应该是
SELECT
investors.*
FROM
investors
LEFT OUTER JOIN disbursements ON disbursements.investor_id = investors.id
WHERE
disbursements.disbursed_at BETWEEN xxxxx AND xxxxx
OR disbursements.disbursed_at IS NULL