如何编写此范围以在嵌套模型上搜索属性? (再次)

好,

我今天早些时候问了这个问题

如何编写范围以在嵌套模型上搜索属性?

并在Rails中搜索嵌套模型中的属性得到了很好的答案。

在上一个问题中,写了一个范围,发现所有患者入院时的出院时间为零(谢谢tjwallace)。

class Patient  nil) end 

我现在要做的是写一个名为:discharge的范围,它会进行一次搜索,返回所有至少有一次入院且放电时间不为零的患者。 我试过以下几点;

 scope :discharged, includes(:admissions).where('admissions.discharge_time  ?', nil) 

但是这没有返回结果(并且数据库中确实存在应该通过正确编写的搜索找到的患者)。 任何帮助将不胜感激。

这是因为在SQL中你不能真正地将任何东西与NULL进行比较,你需要写这样的东西:

  scope :discharged, includes(:admissions).where('admissions.discharge_time is not ?', nil) 

以下是对此SQL行为的一个很好的解释: http : //www.xaprb.com/blog/2006/05/18/why-null-never-compares-false-to-anything-in-sql/