ruby-on-rails Rails:其中条件中包含“OR is NULL”

8hhllhi2  于 2022-11-26  发布在  Ruby
关注(0)|答案(1)|浏览(161)

我想获取日期时间属性为NULL或在某个时间范围内的所有记录。如何将or where disbursed_at IS NULL添加到where内的条件中?我的实际查询要长得多,我不想使用.or重复所有查询

Investor.left_join(:disbursements).where(disbursements: { disbursed_at: year_period })
mkshixfv

mkshixfv1#

一般来说,您可以通过提供Array(至少包含一个nil元素)作为Hash参数的一部分来添加OR column_X IS NULL条件。
例如:

Investor
  .left_join(:disbursements)
  .where(disbursements: { disbursed_at: [year_period,nil] })

假设year_periodRange,则应产生

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

相关问题